Skip to content

[Feature Request] Machine-readable progress outputs  #11508

@joeyballentine

Description

@joeyballentine

What's the problem this feature will solve?

Reading pip's install progress when invoked via subprocess.

Currently, rich's progress bar support does not work in a subprocess. This means that any programmatic subprocess invocation of a pip install/uninstall cannot detect the current progress. Any kind of flag that could enable some sort of text-only output of download progress would be fantastic.

I had previously opened a similar issue, #11171, where I suggested allowing users to force rich's progress bar formatting. However, I currently believe just having an option for machine-readable output would be better.

Describe the solution you'd like

A flag that would output download and install progress in a way that is readable by parent processes. This can be done many ways, the easiest of which would probably just be by having a percentage or a fraction labeled with what action the percentage is for.

Alternative Solutions

Literally just anything that allows me to read the progress of a pip install. Right now in order to show progress for pip installs in my app, I have to parse the found wheel name, find the download URL from pypi's API, download the wheel file manually, then install it via pip. I would much rather just rely on pip's implementation, however it is not possible at the moment.

Additional context

Without being able to show download progress, large wheel files like PyTorch distributions (~3GB) can seem like they are stuck or unable to download. Showing the current progress (and that it is moving upwards) allows the user to see that something actually is happening.

This of course is built into pip thanks to rich's progress bar support. However, this is completely lost when running pip in a subprocess. Hence why I would really like this feature.

For more context, see #11171.

Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions