🔍 PiPulse
Python Dependency Health Analyzer — scan your requirements.txt and get a full health report on every package: vulnerabilities, version status, GitHub activity, and an overall health score.
pipulse scan requirements.txt
Features
- Vulnerability scanning via the OSV database
- Version check — see which packages are outdated, up-to-date, or ahead
- GitHub activity — ACTIVE / STALE / ABANDONED based on last commit
- Health score — 0–100 score per package and an overall project score
- Three output formats — rich terminal table, HTML report, JSON report
- Handles unpinned packages gracefully
Installation
pip install pipulse
Requires Python 3.9+
Usage
Terminal output
pipulse scan requirements.txt
Generate HTML report
pipulse scan requirements.txt --html
# saves to report.html
pipulse scan requirements.txt --html my_report.html
# saves to custom filename
Generate JSON report
pipulse scan requirements.txt --json
# saves to report.json
pipulse scan requirements.txt --json audit.json
Both at once
pipulse scan requirements.txt --html --json
Example Output
PiPulse Report
┌──────────┬─────────┬────────┬────────────┬───────┬───────┬──────────┬────────┐
│ Package │ Current │ Latest │ Status │ Vulns │ Stars │ Activity │ Health │
├──────────┼─────────┼────────┼────────────┼───────┼───────┼──────────┼────────┤
│ requests │ 2.28.0 │ 2.31.0 │ Outdated │ 2 │ 51k │ ACTIVE │ 70 │
│ flask │ 3.0.0 │ 3.0.0 │ Up-to-Date │ 0 │ 67k │ ACTIVE │ 100 │
│ pyjwt │ 1.7.1 │ 2.8.0 │ Outdated │ 3 │ 5k │ ACTIVE │ 55 │
└──────────┴─────────┴────────┴────────────┴───────┴───────┴──────────┴────────┘
Project PiPulse Score: 75/100
Health Score
Each package gets a score from 0 to 100 based on:
| Factor | Impact |
|---|---|
| Each vulnerability found | −5 |
| Package is outdated | −15 |
| Repository is stale (90–365 days) | −10 |
| Repository is abandoned (365+ days) | −30 |
| 10k+ GitHub stars | +5 |
| 50k+ GitHub stars | +10 |
The project score is the average across all scanned packages.
Requirements File Format
Standard requirements.txt format is supported:
requests==2.31.0
flask>=3.0.0
packaging
Unpinned packages (no version specified) are flagged and skipped for vulnerability checks.
Limitations
- GitHub data uses the unauthenticated API (60 requests/hour). For large
requirements.txtfiles, GitHub info may returnN/Adue to rate limiting. - Vulnerability data is sourced from OSV — coverage varies by package.
License
MIT © Prabanjan R
Metadata
Release files for pipulse 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 | Provenance | Actions |
|---|---|---|---|---|
| pipulse-0.1.0.tar.gz | 12.7 kB | Without provenance | Details for pipulse-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pipulse-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for pipulse-0.1.0-py3-none-any.whl |
Total release size: 26.6 kB
Release files / pipulse-0.1.0.tar.gz
| Download URL | pipulse-0.1.0.tar.gz |
|---|---|
| Size | 12.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d19e23475cd283d7bc2667209b4db8d7478337eef7ca6f5e127533bdd06c78b6
|
|
BLAKE2b-256 checksum How to use checksums |
156df8e5e48d08677e0bee2b69d470bcb374fb0f0fda9d2f78805e827f4e9acb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Release files / pipulse-0.1.0-py3-none-any.whl
| Download URL | pipulse-0.1.0-py3-none-any.whl |
|---|---|
| Size | 13.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a97604bc40b93bbe68c4f13bfc198fb0a61314ba72bbdc0f9d05753a87da8ad8
|
|
BLAKE2b-256 checksum How to use checksums |
102a541c468cf128e846985af2b99dedcc96f6ee568bfd9872dba9f4cc67296c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Security for pipulse 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.