Show why a Python package is installed by tracing its lock file dependency graph
Project description
whydep
A fast Rust CLI that answers "why is this Python package installed?" by tracing your project's lock file dependency graph and showing which source files use it.
Install
pip install whydep
# or
uv add --dev whydep
Usage
# Run from your project directory
wd certifi
whydep certifi # same tool, longer alias
# Point at a different project
wd certifi --dir /path/to/my-project
Example output
For a transitive dependency:
Why is 'MarkupSafe' installed?
└── jinja2
└── flask
· src/main.py:1: import flask
· src/main.py:2: from flask import Flask, request
└── (project root)
For a direct dependency:
Why is 'flask' installed?
· src/main.py:1: import flask
· src/main.py:2: from flask import Flask, request
└── (project root)
Lines starting with · show where your code imports the direct dependency that pulled the package in.
Supported lock files
| Tool | Lock file |
|---|---|
| uv | uv.lock |
| Poetry | poetry.lock |
uv.lock is preferred when both exist. The lock file is searched in the given directory and up to 3 parent directories.
Configuration
Add a [tool.whydep] section to your pyproject.toml to limit source scanning to specific directories (faster, less noise):
[tool.whydep]
src = "src" # single directory
# src = ["src", "tests"] # or multiple
Without this setting the entire project directory is scanned.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file whydep-0.1.1.tar.gz.
File metadata
- Download URL: whydep-0.1.1.tar.gz
- Upload date:
- Size: 14.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a256f410615df937366c7979e8a5d55f36c372b0089abc8c08f5441d0b04fef5
|
|
| MD5 |
a3768acdc8d06efbc6a921141567a2f9
|
|
| BLAKE2b-256 |
ee9b4e3f0f4b846091d57c4673cf4ec4bbf308862e871d564aa2afed3652bb37
|
Provenance
The following attestation bundles were made for whydep-0.1.1.tar.gz:
Publisher:
release.yml on colour-white/whydep
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
whydep-0.1.1.tar.gz -
Subject digest:
a256f410615df937366c7979e8a5d55f36c372b0089abc8c08f5441d0b04fef5 - Sigstore transparency entry: 1278938235
- Sigstore integration time:
-
Permalink:
colour-white/whydep@34e3b77966b2d184c76ab3bbfeb2d7e8c633c1e0 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/colour-white
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@34e3b77966b2d184c76ab3bbfeb2d7e8c633c1e0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file whydep-0.1.1-py3-none-win_amd64.whl.
File metadata
- Download URL: whydep-0.1.1-py3-none-win_amd64.whl
- Upload date:
- Size: 945.6 kB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7a1ec8bb89dc81988eb58f4d7b7b560c6e261e7e9974e351a44c41f4a99e915c
|
|
| MD5 |
1c868d26c5b137a32c7c7c97de6a7d9b
|
|
| BLAKE2b-256 |
a235bed4794a1320fc3848dc97211c200f5cf82c83d27604a0db02ab3b3130f4
|
Provenance
The following attestation bundles were made for whydep-0.1.1-py3-none-win_amd64.whl:
Publisher:
release.yml on colour-white/whydep
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
whydep-0.1.1-py3-none-win_amd64.whl -
Subject digest:
7a1ec8bb89dc81988eb58f4d7b7b560c6e261e7e9974e351a44c41f4a99e915c - Sigstore transparency entry: 1278938333
- Sigstore integration time:
-
Permalink:
colour-white/whydep@34e3b77966b2d184c76ab3bbfeb2d7e8c633c1e0 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/colour-white
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@34e3b77966b2d184c76ab3bbfeb2d7e8c633c1e0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file whydep-0.1.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: whydep-0.1.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.3 MB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0aa5360d0ebde2f85df821ed7006aa28f6805085682fddf4531056ab691351e0
|
|
| MD5 |
83cdc98ebc90fa093e608f39dd0bbd69
|
|
| BLAKE2b-256 |
04c6c0d6b92431ee96a5ab34b64bfe77b17244a3668dc9d9018754f930222037
|
Provenance
The following attestation bundles were made for whydep-0.1.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on colour-white/whydep
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
whydep-0.1.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
0aa5360d0ebde2f85df821ed7006aa28f6805085682fddf4531056ab691351e0 - Sigstore transparency entry: 1278938275
- Sigstore integration time:
-
Permalink:
colour-white/whydep@34e3b77966b2d184c76ab3bbfeb2d7e8c633c1e0 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/colour-white
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@34e3b77966b2d184c76ab3bbfeb2d7e8c633c1e0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file whydep-0.1.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: whydep-0.1.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 1.2 MB
- Tags: Python 3, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f81ed027a24d4085644e04e7b066d6873988c176508cffdf71535b0fc6bf925a
|
|
| MD5 |
26155ba3635e3b80aff5d1efd5fc6afc
|
|
| BLAKE2b-256 |
02bd35f438f52cd002504b74db4d0e0c48234f50908c1f6b7c78c9556ea7fca0
|
Provenance
The following attestation bundles were made for whydep-0.1.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
release.yml on colour-white/whydep
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
whydep-0.1.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
f81ed027a24d4085644e04e7b066d6873988c176508cffdf71535b0fc6bf925a - Sigstore transparency entry: 1278938298
- Sigstore integration time:
-
Permalink:
colour-white/whydep@34e3b77966b2d184c76ab3bbfeb2d7e8c633c1e0 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/colour-white
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@34e3b77966b2d184c76ab3bbfeb2d7e8c633c1e0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file whydep-0.1.1-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: whydep-0.1.1-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.2 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce2f25951177820c63f71063359c38b77e4070abb253191f22e5028d05aa50bc
|
|
| MD5 |
06e2ce57a213aaadd45ace1088f13225
|
|
| BLAKE2b-256 |
a0b527ef5ddec9ddcb29c92322643e9c8caeeccb96a6013f05a092ab34a0b852
|
Provenance
The following attestation bundles were made for whydep-0.1.1-py3-none-macosx_11_0_arm64.whl:
Publisher:
release.yml on colour-white/whydep
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
whydep-0.1.1-py3-none-macosx_11_0_arm64.whl -
Subject digest:
ce2f25951177820c63f71063359c38b77e4070abb253191f22e5028d05aa50bc - Sigstore transparency entry: 1278938255
- Sigstore integration time:
-
Permalink:
colour-white/whydep@34e3b77966b2d184c76ab3bbfeb2d7e8c633c1e0 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/colour-white
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@34e3b77966b2d184c76ab3bbfeb2d7e8c633c1e0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file whydep-0.1.1-py3-none-macosx_10_12_x86_64.whl.
File metadata
- Download URL: whydep-0.1.1-py3-none-macosx_10_12_x86_64.whl
- Upload date:
- Size: 1.2 MB
- Tags: Python 3, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
081e03950486a173c70c724dbf1ec7437f6d6b7e35a2b8a322b8be5a8223a36f
|
|
| MD5 |
61a0f5265a4efac64e5aea6a9bb8c14d
|
|
| BLAKE2b-256 |
deb8478afd02995eeeeeae15cb96b3c6ab420d2b827a007a6d13523004ddd9dd
|
Provenance
The following attestation bundles were made for whydep-0.1.1-py3-none-macosx_10_12_x86_64.whl:
Publisher:
release.yml on colour-white/whydep
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
whydep-0.1.1-py3-none-macosx_10_12_x86_64.whl -
Subject digest:
081e03950486a173c70c724dbf1ec7437f6d6b7e35a2b8a322b8be5a8223a36f - Sigstore transparency entry: 1278938318
- Sigstore integration time:
-
Permalink:
colour-white/whydep@34e3b77966b2d184c76ab3bbfeb2d7e8c633c1e0 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/colour-white
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@34e3b77966b2d184c76ab3bbfeb2d7e8c633c1e0 -
Trigger Event:
push
-
Statement type: