Skip to main content

pip-fund

PyPI version Python versions CI

Find funding links for installed Python packages. Run pip-fund to inspect a Python environment, name packages to include their dependencies, or explicitly select a project. Reports group shared funding destinations and show where each link came from and which lookups were incomplete.

Installation

python -m pip install pip-fund

GitHub funding-file discovery needs the optional YAML parser:

python -m pip install "pip-fund[github]"

Choose what to inspect

Scan the active environment from any directory:

pip-fund

The command uses an activated virtual environment or Conda environment when available, otherwise the Python interpreter running pip-fund. It does not read a project merely because the current directory contains pyproject.toml.

Select an interpreter explicitly:

pip-fund --python /path/to/environment/bin/python

On Windows, a virtual environment's interpreter is usually C:\path\to\environment\Scripts\python.exe. The target environment does not need pip-fund installed. Every report identifies the interpreter inspected.

Inspect named packages and their installed dependencies:

pip-fund requests "httpx[http2]"
pip-fund requests --python /path/to/environment/bin/python

Inspect the dependencies declared by a project:

pip-fund --project /path/to/project
pip-fund --project /path/to/project --extra server --group test
pip-fund --project /path/to/project --python /path/to/environment/bin/python

Project mode reads the project's pyproject.toml and uses its .venv. If that environment is missing, create it or supply --python; pip-fund will not silently substitute another environment. --extra and --group require --project.

Using pipx or uvx

Tools installed with pipx or uv have their own environments. Activate the environment you want to inspect or provide a target explicitly:

pipx install pip-fund
pip-fund --python /path/to/environment/bin/python
uvx --from pip-fund pip-fund --python /path/to/environment/bin/python

The --python after pip-fund selects the environment to inspect. A --python option passed to uvx itself selects the interpreter that runs the tool. Without activation or an explicit target, recognized pipx and uv tool environments produce an error with instructions for selecting a target.

Installed metadata is read locally. Network lookups are opt-in:

pip-fund --remote --github

--remote queries PyPI when funding metadata is absent or a repository URL is needed for GitHub discovery. --github adds links from a discovered repository's .github/FUNDING.yml, even when installed metadata already supplies funding links. Public repositories work without authentication; set GITHUB_TOKEN to increase the API rate limit or access repositories visible to that token.

Reports

pip-fund --format json
pip-fund --format markdown
pip-fund --strict
pip-fund requests --remote --github --open

--strict exits with status 1 when missing dependencies, incompatible versions, or lookup errors make the report incomplete. Invalid arguments or an unavailable target interpreter exit with status 2. A package without a funding declaration is not an error.

--open requires one explicit package and exactly one funding destination across that package and its dependencies. It opens that destination in a browser.

For example, a project report might contain:

Scanned 2 dependencies from project example.
Packages advertising funding: 2; destinations: 1.
Python: /path/to/project/.venv/bin/python

https://example.com/support
  Direct: Alpha
  Transitive: Bravo
  Labels: Funding
  Sources: metadata

Environment-wide reports list packages without assigning direct or indirect relationships. JSON uses schema version 1 and includes the target interpreter, summary counts, destinations, package versions, discovery sources, and issues. Dependency depth and parent relationships are included for graph scans; direct and depth are null for environment-wide scans.

Discovery rules and limits

Funding labels are normalized using the PyPA Project-URL rules. The recognized labels are Funding, Sponsor, Donate, and Donation. Links must use HTTP or HTTPS. Grouping preserves URL fragments and meaningful query parameters while removing utm_* tracking parameters.

The dependency graph describes installed packages. pip-fund does not install packages, resolve a lockfile, or measure which dependencies an application actually uses. Python and platform conditions are evaluated for the selected interpreter. Project mode supports standard [project] dependencies, optional dependencies, and Dependency Groups. For dynamic dependencies or tool-specific project formats, supply package requirements explicitly.

Funding declarations can be incomplete. An absent link does not establish that a package is adequately funded or that its maintainers decline support.

Changes from 0.1

Named-package scans now include installed dependencies. Use --format json or --format markdown in place of --json or --markdown; the JSON structure and Python API have changed. The default remains an environment scan.

Development

Documentation tooling requires Python 3.12 or newer; the package supports Python 3.11 and newer.

uv sync --all-groups --all-extras
make ci

License

MIT

Metadata

Release files for pip-fund 0.2.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 pip-fund 0.2.1
File Size Uploaded
pip_fund-0.2.1.tar.gz 18.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pip-fund 0.2.1
File Interpreter ABI Platform
pip_fund-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 40.2 kB

Release files / pip_fund-0.2.1.tar.gz

Download URL pip_fund-0.2.1.tar.gz
Size 18.9 kB
Tags Source
SHA-256 checksum
How to use checksums
71043c4f78bfa78082c033f3357482575cf284d8351fa8297d1ae59e64aa62f1
BLAKE2b-256 checksum
How to use checksums
a80c212f914ec9210d3d4bb0a25e410d7ddd2ac23295e2c73675187ccd7453d9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 17, 2026.

Transparency log

Release files / pip_fund-0.2.1-py3-none-any.whl

Download URL pip_fund-0.2.1-py3-none-any.whl
Size 21.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
281c17ee03de5a215b37472fa62303a3841f458977a3ef2c83b9dab65e4eec16
BLAKE2b-256 checksum
How to use checksums
466d585ae7193b2dae4420b007b85a13fee43c0a84c2c23c68f7df42554405d4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 17, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.1.0

2 release files

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