Safe, typo-aware package installer for Python.
Project description
pkg-guard
pkg-guard is a smart, typo-aware CLI wrapper for pip install — designed to prevent installing the wrong packages (e.g., reqeusts instead of requests).
It checks PyPI before installing, offers fuzzy suggestions, and lets you interactively choose the correct package with arrow keys — just like vite or npm init.
Features
✅ Detects misspelled packages before install
✅ Fuzzy matching & intelligent suggestions (powered by RapidFuzz)
✅ Interactive selection with arrow keys (InquirerPy)
✅ Spinner feedback using Rich
✅ Caching for faster lookups
✅ Extensible architecture (future support for npm, cargo, etc.)
Installation
From PyPI (after release)
pip install pkg-guard
From source (for developers)
git clone https://github.com/Prasad2357/pkg-guard
cd pkg-guard
pip install -e .
Usage
pkg-guard install reqeusts
Example
pkg-guard → checking PyPI for package: reqeusts ...
✖ Not found on PyPI: reqeusts
? Select package to install instead of 'reqeusts':
▸ requests
request
regex
flask
Other (type manually)
Skip
- Arrow keys to navigate
- Press Enter to confirm
- Type manually if your package isn’t listed
How it Works
-
Checks if the given package exists on PyPI
-
If not found, loads a local list of popular packages
-
Uses fuzzy matching (WRatio) to find closest matches
-
Presents them interactively via InquirerPy
-
Safely installs the chosen package with pip
Project Structure
pkg_guard/
├── __main__.py # Entry point for `python -m pkg_guard
├── cli.py # CLI definitions (Typer app)
│
├── core/
│ ├── installer.py # Main install workflow
│ └── pypi_utils.py # PyPI querying, caching, suggestions
│
└── ui/
├── console.py # Rich-based spinner & console
└── prompts.py # Interactive fuzzy selection
Tech Stack
| Component | Library/Framework |
|---|---|
| CLI Framework | Typer |
| Interactive Prompts | InquirerPy |
| Fuzzy Matching | RapidFuzz |
| Console UI | Rich |
| HTTP Requests | Requests |
Development
Run in dev mode:
python -m pkg_guard install flask
Run linting (optional):
pip install black
black pkg_guard
Contributing
Contributions are welcome!
Feel free to fork this repo, open issues, or submit PRs.
License
This project is licensed under the terms of the MIT License — see the LICENSE file for details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pkg_guard-0.1.4.tar.gz.
File metadata
- Download URL: pkg_guard-0.1.4.tar.gz
- Upload date:
- Size: 11.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7f1587add85103850cdd7c6f0e07e3f915d4cb7c04733eb2a0bb5b72a5a955ba
|
|
| MD5 |
93110a2cd3b4760f79af48485d3b10ea
|
|
| BLAKE2b-256 |
8a7061ff436b846b2bbfca378c8962e76649db25861d0a406a639f77858e272f
|
File details
Details for the file pkg_guard-0.1.4-py3-none-any.whl.
File metadata
- Download URL: pkg_guard-0.1.4-py3-none-any.whl
- Upload date:
- Size: 11.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
719ff04ab219556c565b1655f6b45a4d38d87af95d6a9b56c40130fd11f1179b
|
|
| MD5 |
3a1e7519158ecd945b6ceaae46eb6920
|
|
| BLAKE2b-256 |
c5b6b1f892a9062ca8b58fd002c3a1df280318fffb96736f927d184db5e1778a
|