DepWatch — Dependency Health Scanner
Know why your dependencies are healthy or risky — not just that they are.
DepWatch scans a GitHub repository, extracts its dependencies, and delivers a transparent health report for each one: a numeric risk score, evidence signals, and an actionable recommendation.
Features
- Multi-signal analysis — commits, releases, contributors, and issue activity
- Risk score (0–10) — quantifiable health metric for every dependency
- Confidence levels — High / Medium / Low based on signal agreement
- Actionable recommendations — clear guidance on what to do next
- Rich CLI output — color-coded panels with detailed breakdowns
- FastAPI backend — REST API for programmatic access
Installation
From PyPI
pip install depwatch-cli
From Source
git clone https://github.com/pranavkp71/DepWatch.git
cd DepWatch
pip install -e ".[dev]"
This creates dist/dep_watch-X.Y.Z.tar.gz and dist/dep_watch-X.Y.Z-py3-none-any.whl.
Usage
Scan a Repository
depwatch scan https://github.com/fastapi/fastapi
GitHub Token (Recommended)
Set a token to avoid rate limits:
export GITHUB_TOKEN=ghp_your_token_here
Or create a .env file:
GITHUB_TOKEN=ghp_your_token_here
API Server
uvicorn app.main:app --reload
Sample Output
📦 Found 5 dependencies. Analyzing health...
🟢 5 healthy
╭─────────── pydantic ────────────╮
│ Status: Healthy │
│ Risk Score: 0/10 │
│ Confidence: High │
│ │
│ Signals: │
│ • Last commit 0 days ago │
│ • Last release 15 days ago │
│ • Contributor count: 100 │
│ • Open issues: 560 │
│ • 100 issues updated recently │
│ │
│ Action: No action needed │
╰─────────────────────────────────╯
How Scoring Works
Health Statuses
| Status | Risk Score | Meaning |
|---|---|---|
| 🟢 Healthy | 0 – 3 | Active commits, responsive maintainers |
| 🟡 Warning | 4 – 6 | Slowing activity or low contributor count |
| 🔴 Risky | 7 – 10 | Stale commits, stale releases, solo maintainer |
Risk Score Weights
| Factor | Points |
|---|---|
| No commits in 90+ days | +3 |
| Releases stale 120+ days | +3 |
| No official releases | +1 |
| Low contributor count (<2) | +2 |
| Stagnant issues (50+, no activity) | +2 |
| Large maintainer base (10+) | −2 |
Confidence Levels
- High — 3+ signals agree
- Medium — 2 signals agree
- Low — only 1 weak signal
Limitations
- Only supports GitHub-hosted repositories
- Parses
requirements.txt,package.json, andpyproject.toml - GitHub API rate limits apply (use a token for best results)
- Does not analyze code quality or vulnerabilities directly
Project Structure
depwatch/
├── app/
│ ├── main.py # FastAPI app & API models
│ ├── github/ # GitHub API client
│ ├── scoring/ # Health scoring engine
│ └── services/ # Dependency scanner + analyzer
├── cli/
│ └── main.py # Typer CLI with Rich output
├── tests/
│ └── test_scoring.py # Unit tests
├── .github/ # CI & templates
├── pyproject.toml
├── Makefile
└── README.md
Contributing
Contributions are welcome! See CONTRIBUTING.md for guidelines.
License
MIT — see LICENSE for details.
Metadata
Release files for depwatch-cli 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| depwatch_cli-0.1.0.tar.gz | 13.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| depwatch_cli-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 27.2 kB
Release files / depwatch_cli-0.1.0.tar.gz
| Download URL | depwatch_cli-0.1.0.tar.gz |
|---|---|
| Size | 13.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bf92b2973df04d8da3c69c2721edea8990554daeac042394187f26b079a93126
|
|
BLAKE2b-256 checksum How to use checksums |
9eec2fc37e127bad14b8611aea682d0d0b74d69dc592b1747f932a5cbf80f319
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / depwatch_cli-0.1.0-py3-none-any.whl
| Download URL | depwatch_cli-0.1.0-py3-none-any.whl |
|---|---|
| Size | 13.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7ea95ea4e50a21302b1cd8307738790781ef2fe8680aad15187b9feecf3e96cc
|
|
BLAKE2b-256 checksum How to use checksums |
5b20bdb8de9ae3d38089eeeb3ac9f753136680f2474fa39c6fa189a431a87bea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|