microsoft / microsoft/component-detection

Investigate usage of `--use-feature=fast-deps` in `pip install --report`

Open
#1,182 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

detector:pip status:blocked type:feature
Dominant language
C#
Stars
553
Forks
135
Avg merge
20h 58m
Merged PRs (30d)
6

Description

[PEP 658 – Serve Distribution Metadata in the Simple Repository API](https://peps.python.org/pep-0658/) was made available in May 2021 to help improve dependency resolution across the pip tooling by serving metadata information in a slimmer API. In v20 of the pip tooling, there was also the introduction of `--use-feature=fast-deps` to start making use of this information.

For our own tooling, we can investigate if there is any notable performance improvement in installation report generation across the large dependency trees component-detection tests on. However, based on https://github.com/pypa/pip/issues/8670 it is unlikely that there will be a noticeable increase in speed here until future improvements have been implemented.

The following PR https://github.com/pypa/pip/pull/12208 attempts to address some of these concerns and reports to have an estimated benchmark improvement of ~50% in dependency resolution time. However, it is still actively in development with the most recent commit on the branch in May 2024. Until it is merged it may not bring a benefit to run `--use-feature=fast-deps`.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the component-detection tests that exercise installation report generation and compare dependency-tree performance with and without pip's --use-feature=fast-deps option. Check the linked PEP 658 context and pip issue 8670 before running the benchmark. Done means recording whether the flag produces a notable improvement and documenting the resulting recommendation.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
devtools, performance
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.