Python Full Dependency Tree
Resolve and return the complete set of packages that would be installed for a given Python package (entire transitive dependency tree), resolved for a specific Python version so environment markers are respected.
When to use
- User asks for "full dependency tree", "all dependencies", "transitive dependencies", or "install requirements" of a Python package.
- User needs the full picture of install-time dependencies (not just direct deps from metadata).
- User wants to understand the total footprint of a package in a container image or environment.
- Complement to
python-packaging-complexity when the full resolved tree is needed beyond direct metadata.
When NOT to use
- User only needs direct (first-level) dependencies -- use
python-packaging-complexity instead, which reads PyPI metadata without resolution.
- User is asking about build-time dependencies (e.g. setuptools, CMake, Cython) -- those are not included in install-time resolution.
- User is asking about dev/test dependencies (e.g. pytest, mypy) -- those are extras, not default install deps.
- User is asking about license, source, or build complexity analysis -- use the corresponding
python-packaging-* skills.
Inputs
| Parameter |
Required |
Default |
Description |
| package name |
Yes |
— |
PyPI project name (e.g. vllm) |
| package version |
No |
latest |
e.g. 0.4.0 |
| Python version |
No |
3.12 |
e.g. 3.11, 3.12 |
Instructions
When a user asks about the full dependency tree, all transitive dependencies, or install requirements for a Python package:
Run the helper script with the package name and optional version/Python version:
python3 scripts/resolve_full_deps.py <package> [version] [python_version]
The script automatically tries uv pip compile first (fast, supports cross-version resolution). If uv is not installed, it falls back to pip install --dry-run --report in a temporary venv.
Present the output to the user:
- Output is sorted alphabetically and deduplicated.
- Each line is
name==version with PEP 503 normalized names.
- Warnings/errors go to stderr and should be relayed to the user.
Provide context based on the results:
- Total number of transitive dependencies.
- Notable packages in the tree (e.g.
torch, numpy, cuda related packages).
- If the user is assessing container image size or supply-chain risk, highlight the dependency count and any heavy packages.
Output format
Return a sorted, unique set of normalized dependencies. Include version unless the user asked for names only.
- One dependency per line:
name==version
- Or as a list:
["package-a==1.0.0", "package-b==2.1.0"]
Example
$ python3 scripts/resolve_full_deps.py requests 2.32.3
certifi==2024.8.30
charset-normalizer==3.4.1
idna==3.10
requests==2.32.3
urllib3==2.3.0
Interpretation: requests 2.32.3 pulls in 4 transitive dependencies (5 total including itself).
Error handling
uv not found: The script automatically falls back to pip. If the user sees a stderr warning about this, suggest installing uv for faster resolution.
- Package not found on PyPI: The script exits with a non-zero code and an error on stderr. Verify the package name spelling and whether a specific version exists.
- Network errors / timeouts: Both
uv and pip need network access to PyPI. If resolution times out (150s), suggest retrying or checking network connectivity.
- pip version too old: The
--report flag requires pip >= 22.2. If the fallback fails with an unrecognized argument error, advise upgrading pip.
Integration with other skills
python-packaging-complexity: Use that skill first to get direct dependencies and build complexity, then use this skill to get the full transitive tree. Together they give a complete picture.
python-packaging-license-checker / python-packaging-license-finder: After getting the full dep list from this skill, feed individual packages into the license skills to audit the entire tree.
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: python-full-deps3description: Resolve the full install-time dependency tree for a Python package. Use when the user needs all transitive dependencies, full dependency list, or install requirements resolved for a specific Python version with environment markers. Use when this capability is needed.4---56# Python Full Dependency Tree78Resolve and return the complete set of packages that would be installed for a given Python package (entire transitive dependency tree), resolved for a specific Python version so environment markers are respected.910## When to use1112- User asks for "full dependency tree", "all dependencies", "transitive dependencies", or "install requirements" of a Python package.13- User needs the full picture of install-time dependencies (not just direct deps from metadata).14- User wants to understand the total footprint of a package in a container image or environment.15- Complement to `python-packaging-complexity` when the full resolved tree is needed beyond direct metadata.1617## When NOT to use1819- User only needs **direct** (first-level) dependencies -- use `python-packaging-complexity` instead, which reads PyPI metadata without resolution.20- User is asking about **build-time** dependencies (e.g. setuptools, CMake, Cython) -- those are not included in install-time resolution.21- User is asking about **dev/test** dependencies (e.g. pytest, mypy) -- those are extras, not default install deps.22- User is asking about **license**, **source**, or **build complexity** analysis -- use the corresponding `python-packaging-*` skills.2324## Inputs2526| Parameter | Required | Default | Description |27|-----------------|----------|---------|-------------------------------------|28| package name | Yes | — | PyPI project name (e.g. `vllm`) |29| package version | No | latest | e.g. `0.4.0` |30| Python version | No | 3.12 | e.g. `3.11`, `3.12` |3132## Instructions3334When a user asks about the full dependency tree, all transitive dependencies, or install requirements for a Python package:35361. **Run the helper script** with the package name and optional version/Python version:3738 ```bash39 python3 scripts/resolve_full_deps.py <package> [version] [python_version]40 ```4142 The script automatically tries `uv pip compile` first (fast, supports cross-version resolution). If `uv` is not installed, it falls back to `pip install --dry-run --report` in a temporary venv.43442. **Present the output** to the user:45 - Output is sorted alphabetically and deduplicated.46 - Each line is `name==version` with PEP 503 normalized names.47 - Warnings/errors go to stderr and should be relayed to the user.48493. **Provide context** based on the results:50 - Total number of transitive dependencies.51 - Notable packages in the tree (e.g. `torch`, `numpy`, `cuda` related packages).52 - If the user is assessing container image size or supply-chain risk, highlight the dependency count and any heavy packages.5354## Output format5556Return a **sorted, unique** set of normalized dependencies. Include version unless the user asked for names only.5758- One dependency per line: `name==version`59- Or as a list: `["package-a==1.0.0", "package-b==2.1.0"]`6061### Example6263```bash64$ python3 scripts/resolve_full_deps.py requests 2.32.365certifi==2024.8.3066charset-normalizer==3.4.167idna==3.1068requests==2.32.369urllib3==2.3.070```7172Interpretation: `requests 2.32.3` pulls in 4 transitive dependencies (5 total including itself).7374## Error handling7576- **`uv` not found**: The script automatically falls back to pip. If the user sees a stderr warning about this, suggest installing [uv](https://docs.astral.sh/uv/) for faster resolution.77- **Package not found on PyPI**: The script exits with a non-zero code and an error on stderr. Verify the package name spelling and whether a specific version exists.78- **Network errors / timeouts**: Both `uv` and `pip` need network access to PyPI. If resolution times out (150s), suggest retrying or checking network connectivity.79- **pip version too old**: The `--report` flag requires pip >= 22.2. If the fallback fails with an unrecognized argument error, advise upgrading pip.8081## Integration with other skills8283- **`python-packaging-complexity`**: Use that skill first to get direct dependencies and build complexity, then use this skill to get the full transitive tree. Together they give a complete picture.84- **`python-packaging-license-checker`** / **`python-packaging-license-finder`**: After getting the full dep list from this skill, feed individual packages into the license skills to audit the entire tree.8586---87> Converted and distributed by [TomeVault](https://tomevault.io/claim/opendatahub-io) — claim your Tome and manage your conversions.88<!-- tomevault:4.0:skill_md:2026-04-11 -->