Skip to main content

pincheck

Supply-chain gate for requirements.txt. Stdlib only, zero dependencies.

For every pinned package (name==version) it checks:

  1. Vulnerabilities — advisories on OSV.dev for that exact version.
  2. Malware — OSV MAL-* advisories (OpenSSF malicious-packages feed).
  3. Cooldown — fails if the release is younger than N hours (default 48), so you never install something the community hasn't had time to analyse.
  4. Yanked releases.
pip install pincheck
pincheck requirements.txt
pincheck requirements.txt --hours 72 --json
pincheck base.txt dev.txt --ignore GHSA-xxxx-xxxx-xxxx
pip freeze | pincheck -

Exit codes

code meaning
0 clean
1 malware or release younger than cooldown
2 known vulnerabilities, yanked, or unverifiable release
3 usage / network error

CI

- run: pip install pincheck && pincheck requirements.txt --hours 72

Limits

  • Only exact pins (==) are checked; unpinned lines are listed, not silently passed. Check a fully resolved file (pip-compile, uv pip compile, pip freeze) to cover transitive deps.
  • A clean OSV result on a brand-new release proves nothing: OSV lags. That is what the cooldown is for.
  • It checks the release you pin, not whether your index/mirror serves the same bytes. Use --require-hashes for that.
  • PyPI only.

MIT licensed.

Metadata

Release files for pincheck 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pincheck 0.1.0
File Size Uploaded Provenance Actions
pincheck-0.1.0.tar.gz 6.9 kB Without provenance Details for pincheck-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for pincheck 0.1.0
File Interpreter ABI Platform Actions
pincheck-0.1.0-py3-none-any.whl Python 3 none any Details for pincheck-0.1.0-py3-none-any.whl

Total release size: 14.5 kB

Release files / pincheck-0.1.0.tar.gz

Download URL pincheck-0.1.0.tar.gz
Size 6.9 kB
Tags Source
SHA-256 checksum
How to use checksums
f6162a2a1c669b07b724d1e84021c0256ada56fd6bc0ab85028be7a1f58e4e97
BLAKE2b-256 checksum
How to use checksums
548f6974c3297755e2becda38d5296488b09e08a33d6b1a689d9e36aa06ee475
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.9

Release files / pincheck-0.1.0-py3-none-any.whl

Download URL pincheck-0.1.0-py3-none-any.whl
Size 7.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
df8259d9b469d85fc0c18ee8d1774050f14469ad6d5ff5e87ac5a20e2b6e9db0
BLAKE2b-256 checksum
How to use checksums
a66f653513d2c62a8a61c2df17aec9ffafacbdb4e1ccd437aa308f05fdcccb8c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.9

Security for pincheck 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.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page