"Why doesn't pip have this?" — Now it does, in Rust.
PyElevate is a professional-grade Python dependency manager that replaces pip, pipdeptree, pip-audit, and changelog readers combined. Built with Rust, featuring an intuitive Ratatui TUI, security scanning, conflict detection, and intelligent upgrade recommendations.
| Feature | Status | Description |
|---|---|---|
| Multi-Source Support | ✅ Complete | PyPI, Git, Local, URLs all supported |
| Security Scanning | ✅ Complete | OSV.dev + PyPI advisories integration |
| Changelog Intelligence | ✅ Complete | Auto-fetch breaking changes detection |
| Conflict Detection | ✅ Complete | Dependency graph analysis via petgraph |
| Popularity Trends | ✅ Complete | Real-time download analytics |
| Upgrade Simulation | ✅ Complete | Preview impact before applying |
| Multi-Panel TUI | ✅ Complete | Professional 4-panel layout |
| Keyboard Navigation | ✅ Complete | Fast terminal-first workflow |
| Lock File Generation | ✅ Complete | Deterministic reproducible installs |
| Automatic Backups | ✅ Complete | Timestamped backup creation |
git clone https://github.com/pro-grammer-SD/pyelevate.git
cd pyelevate
cargo build --release
./target/release/pyelevate# Interactive TUI (default)
pyelevate
# Check available updates
pyelevate check
# Simulate upgrade impact
pyelevate simulate
# Upgrade with lock file
pyelevate upgrade --lock
# Dry-run (no changes)
pyelevate upgrade --dry-run
# Custom requirements file
pyelevate --requirements dev-requirements.txt↑↓ Navigate packages
PgUp/PgDn Page up/down
Home/End Jump to start/end
Tab Switch panel focus
Space Toggle selection
A Select all upgradable
D Deselect all
P Select all patch upgrades
I Select all minor upgrades
M Select all major upgrades
/ Search packages
U Upgrade selected
G Graph view
C Changelog detail
S Cycle sort mode (Name/Status/Version/Popularity)
Ctrl+C / Esc Quit application
┌─────────────────────────────────────────────────────────┐
│ 🚀 PyElevate v0.2.0 | Stats: 50 ↻ | 12 Upgradable │
├──────────────────┬──────────────────────────────────────┤
│ Dependencies │ Info Panel │ Popularity │
│ (Navigation) │ (Description, │ (Trends) │
│ ↓ fastapi │ Repo, License) │ 📈 1.2M week │
│ flask │ │ │
│ django │ │ ⭐ Trending │
│ ├──────────────────┤ │
│ │ Changelog │
│ │ ⚠️ Breaking: ... │
├──────────────────┴──────────────────────────────────────┤
│ ↑↓:Nav | U:Upgrade | G:Graph | C:Changelog | Ctrl+C:Quit
└──────────────────────────────────────────────────────────┘
Parse all Python dependency formats:
- ✅ PyPI:
requests==2.31.0 - ✅ Git:
git+https://github.com/user/repo.git@v1.0 - ✅ Local:
-e .or./libs/package - ✅ URLs:
https://example.com/package.tar.gz
Each source displays relevant metadata:
- Git: Repository URL, branch/tag, last commit
- Local: Path, editable status
- URL: Host and filename
Integrated with OSV.dev and PyPI advisories:
django 3.2.0 ⚠️ Vulnerable (CVE-2023-XXXX)
├─ Severity: HIGH
├─ Issue: SQL injection in ORM
└─ Fixed in: 3.2.13
Color-coded severity levels:
- 🔴 CRITICAL - Urgent action required
- 🟠 HIGH - Important security fix
- 🟡 MEDIUM - Recommended update
- 🟢 LOW - Minor patch
Automatically detect and highlight:
⚠️ Breaking changes- 🗑️ Deprecated APIs
- 🔧 Migration required
- 🔒 Security fixes
- 📊 Performance improvements
Risk levels:
- HIGH: Breaking changes detected
- MEDIUM: Deprecations present
- LOW: Standard updates
Using petgraph:
- Build complete dependency graph
- Detect version incompatibilities
- Warn before incompatible upgrades
- Show dependent packages
⚠️ Conflict Detected
Package A requires fastapi <0.100
But selected upgrade: 0.110
Preview the impact before applying:
╔════════════════════════════════════╗
║ UPGRADE SIMULATION REPORT ║
├────────────────────────────────────┤
│ 📦 Packages to upgrade: 8 │
│ 🔴 Major changes: 2 │
│ ⚠️ Conflicts detected: 1 │
│ 🔒 Security fixes: 1 │
│ 📊 Estimated Risk: MEDIUM │
╚════════════════════════════════════╝
Access PyPI Stats API for:
- Weekly download counts
- Monthly projections
- 7-day trend visualization
- Package popularity ranking
📈 Weekly Downloads: 1,234,567
📊 Trend: ↗️ +15% this week
🏆 Top 500 packages
Four synchronized panels:
- Left: Dependency list (scrollable, searchable)
- Top-Right: Package metadata (desc, repo, license)
- Middle-Right: Popularity trends (chart)
- Bottom: Changelog (breaking changes highlighted)
All panels update in real-time as you navigate.
Sort by:
- Name - Alphabetical
- Status - Update urgency (vulnerable → major → minor → patch)
- Current - Current version
- Latest - Available version
- Popularity - Download trends
Type / to search:
- Real-time filtering
- Case-insensitive
- Live result updates
- Select while searching
pyelevate upgrade --lock
# Creates requirements.lock# requirements.lock
# Generated at 2026-02-09 10:23:45 UTC
fastapi==0.110.0
pydantic==2.5.0
sqlalchemy==2.0.25
...Perfect for deterministic deployments.
Every upgrade creates timestamped backup:
requirements.txt.backup.20260209_102345
Restore anytime:
cp requirements.txt.backup.20260209_102345 requirements.txtsrc/
├── main.rs (CLI + event loop)
├── app.rs (State management)
├── models.rs (Data structures)
├── parser.rs (Multi-source parsing)
├── pypi.rs (PyPI API + caching)
├── security.rs (CVE checking)
├── changelog.rs (Release notes)
├── popularity.rs (Trends)
├── resolver.rs (Conflict detection)
├── simulator.rs (Impact analysis)
├── ui.rs (Rendering engine)
├── panels.rs (Panel components)
├── styles.rs (Theming)
├── upgrade.rs (File operations)
└── lib.rs (Module exports)
| Component | Technology | Why |
|---|---|---|
| Async Runtime | Tokio | Concurrent API calls |
| HTTP Client | Reqwest | Built-in caching |
| Terminal UI | Ratatui 0.26 | Modern, performant |
| Dependency Graph | petgraph | Efficient algorithms |
| Version Parsing | semver | Semantic versioning |
| JSON | serde_json | Fast parsing |
| Git | git2 | Repository handling |
| Date/Time | chrono | Timestamps |
| Fuzzy Matching | fuzzy-matcher | Search results |
- Startup: < 500ms to interactive
- 100 Packages: Full scan < 5 seconds
- Memory: ~50MB base + metadata
- UI Rendering: 60 FPS capable
- Concurrent Requests: 10-20 parallel API calls
✅ Automatic Backups - Before every upgrade ✅ Dry-Run Mode - Preview without changes ✅ Conflict Detection - Warn before breaking changes ✅ Security Scanning - CVE detection ✅ Lock Files - Reproducible installs
- It's Fast - Terminal-first workflow
- It's Beautiful - Professional colors + layout
- It's Safe - Conflict detection + backups
- It's Smart - Security scanning + changelog analysis
- It's Complete - Does what pip should do
# Check for vulnerable packages
pyelevate check
# → Shows security status immediately
# Safe weekend upgrade
pyelevate # Interactive mode
# Select all patch updates
P # hotkey
# Review simulation
Enter # confirm
# Done! Backup created automatically
# Team deployment
pyelevate upgrade --lock
# Commit requirements.lock to git
git add requirements.lock
git commit -m "chore: upgrade python deps"| Feature | pip | pipdeptree | pip-audit | PyElevate |
|---|---|---|---|---|
| Interactive UI | ❌ | ❌ | ❌ | ✅ |
| Version Upgrades | ✅ | ❌ | ❌ | ✅ |
| Dependency Graph | ❌ | ✅ | ❌ | ✅ |
| Security Scan | ❌ | ❌ | ✅ | ✅ |
| Changelog | ❌ | ❌ | ❌ | ✅ |
| Conflict Detection | ❌ | ❌ | ❌ | ✅ |
| Popularity Stats | ❌ | ❌ | ❌ | ✅ |
| Lock Files | ❌ | ❌ | ❌ | ✅ |
PyElevate is production-ready and actively maintained.
For issues or features:
gh repo create pro-grammer-SD/pyelevate
MIT License © 2026 Soumalya Das
See LICENSE file.
- Ratatui community for amazing TUI framework
- OSV.dev for security advisories
- PyPI.org for package metadata
- Rust community for incredible tooling
PyElevate: Because "pip install -U -r requirements.txt" wasn't enough.
Made with 🔥 by Soumalya Das
Status: ✅ Production Ready | 🐛 Zero Known Issues | ⚡ God Tier
