Skip to main content

SafePackages

CodeQL CI Publish to PyPI Publish to TestPyPI

SafePackages is a powerful Python CLI tool designed to scan your project's dependencies for known vulnerabilities. It leverages the OSV (Open Source Vulnerabilities) database to provide accurate and up-to-date security information for a wide range of ecosystems.

Features

  • Multi-Mode Scanning:
    • Single Package: Scan a specific package version.
    • Manifest File: Parse and scan dependency files (e.g., requirements.txt, package.json).
    • Batch Mode: Scan a list of packages from a JSON input.
  • Broad Ecosystem Support: Supports npm, PyPI, Maven, NuGet, Go, Rust, PHP (Composer), Ruby (Gems), and more.
  • Flexible Output: Generate reports in Table, JSON, or CSV formats.
  • CI/CD Ready:
    • Set failure thresholds (e.g., fail only on CRITICAL or HIGH severity).
    • Exit codes for pipeline integration.
  • Dev Dependency Control: Option to include or exclude development dependencies.

Installation

You can install SafePackages using pip:

pip install safe-packages

Or using uv:

uv pip install safe-packages

Usage

After installation, the safepackages command will be available. You can see the help message by running:

safepackages --help

Commands

SafePackages provides three main commands:

1. scan - Scan a Single Package

Scan a specific package version for vulnerabilities.

Usage:

safepackages scan [OPTIONS] NAME

Arguments:

  • NAME: The name of the package to scan (Required).

Options:

  • -e, --ecosystem TEXT: Package ecosystem (e.g., npm, PyPI, Maven, NuGet) (Required).
  • -v, --version TEXT: Package version to check.
  • -f, --format [table|json|csv]: Output format (Default: table).
  • -o, --output TEXT: Write output to a file.
  • --fail-on [low|medium|high|critical]: Exit with error code 1 if vulnerabilities of this severity or higher are found (Default: high).

Example:

safepackages scan requests --version 2.20.0 --ecosystem PyPI

2. file - Scan a Manifest File

Scan a dependency manifest file. The file type is automatically detected.

Usage:

safepackages file [OPTIONS] FILE_PATH

Arguments:

  • FILE_PATH: Path to the manifest file (Required).

Options:

  • --include-dev: Include development dependencies in the scan.
  • -f, --format [table|json|csv]: Output format (Default: table).
  • -o, --output TEXT: Write output to a file.
  • --fail-on [low|medium|high|critical]: Exit with error code 1 if vulnerabilities of this severity or higher are found (Default: high).

Supported Manifests:

  • requirements.txt, poetry.lock, Pipfile.lock (Python)
  • package.json, package-lock.json (npm)
  • yarn.lock (yarn)
  • pom.xml (Maven)
  • go.mod (Go)
  • Cargo.lock (Rust)
  • Gemfile.lock (Ruby)
  • composer.lock (PHP)
  • packages.config, *.csproj (NuGet)

Example:

safepackages file requirements.txt --include-dev --format json

3. batch - Batch Scan

Scan a list of packages from a JSON input string or file.

Usage:

safepackages batch [OPTIONS] JSON_INPUT

Arguments:

  • JSON_INPUT: A JSON string array of packages or a path to a JSON file (Required).
    • Format: [{"name": "pkg_name", "version": "1.0.0", "ecosystem": "PyPI"}, ...]

Options:

  • -f, --format [table|json|csv]: Output format (Default: table).
  • -o, --output TEXT: Write output to a file.
  • --fail-on [low|medium|high|critical]: Exit with error code 1 if vulnerabilities of this severity or higher are found (Default: high).

Example:

# From JSON string
safepackages batch '[{"name":"django","version":"3.0.0","ecosystem":"PyPI"}]'

# From JSON file
safepackages batch packages.json

Development

We use uv and poethepoet for development.

  1. Install uv: https://github.com/astral-sh/uv
  2. Run tasks:
    • uv run poe check - Run full verification (lint, test, build).
    • uv run poe list - List all available tasks.

License

Apache 2.0 License

Metadata

Release files for safe-packages 0.1.1

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

Source distribution (sdist)

Source distribution for safe-packages 0.1.1
File Size Uploaded Provenance
safe_packages-0.1.1.tar.gz 21.9 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for safe-packages 0.1.1
File Interpreter ABI Platform
safe_packages-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 53.5 kB

Release files / safe_packages-0.1.1.tar.gz

Download URL safe_packages-0.1.1.tar.gz
Size 21.9 kB
Tags Source
SHA-256 checksum
How to use checksums
c99b8628e7eb1c6e9414186bb146df26f95e84f6c65c4c003461b1e8457768f9
BLAKE2b-256 checksum
How to use checksums
1ab2430b36806dd41d8463e4d748099293c6ce1750d5741affce8048a324d307
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 9, 2025.

Transparency log

Release files / safe_packages-0.1.1-py3-none-any.whl

Download URL safe_packages-0.1.1-py3-none-any.whl
Size 31.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1a0155beb793fc24821ebb5b62d4169f61c394b031ffac6eb58a2d732978db16
BLAKE2b-256 checksum
How to use checksums
6b29ae5b42215565bcc49f915e9ab5c43ec03909572e4e74d1e7d931d3909ce4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 9, 2025.

Transparency log

Security for safe-packages 0.1.1

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for safe_packages-0.1.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 9, 2025.

Transparency log

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.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files Full 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