Skip to content
Open
Show file tree
Hide file tree
Changes from 13 commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
e05770d
Consolidate spinner and progress bar functionality into ui.py
KRRT7 Jun 2, 2026
6f56529
Fix logging to detect TTY and control terminal rendering appropriately
KRRT7 Jun 2, 2026
1249581
Remove spinner parameter from call_subprocess
KRRT7 Jun 2, 2026
c8d2dee
Update imports and use status() context manager instead of open_spinner
KRRT7 Jun 2, 2026
3c456b0
Delete spinners.py and progress_bars.py, update tests for ui module
KRRT7 Jun 2, 2026
bd00385
cleanup these.
KRRT7 Jun 2, 2026
25c4bd4
Create ui-refactor-perf.feature.rst
KRRT7 Jun 2, 2026
57dd03a
Merge branch 'main' into ui-refactor-perf
KRRT7 Jun 2, 2026
6efe3be
remove interface and apply formatter
KRRT7 Jun 2, 2026
431a863
remove spinner
KRRT7 Jun 2, 2026
71967c0
Delete uv.lock
KRRT7 Jun 2, 2026
77daee1
update news file
KRRT7 Jun 2, 2026
6b764c4
update
KRRT7 Jun 2, 2026
ffbf339
Merge branch 'main' into ui-refactor-perf
KRRT7 Jun 5, 2026
88e9d31
Merge branch 'main' into ui-refactor-perf
KRRT7 Jun 8, 2026
bf8356b
Update ci.yml
KRRT7 Jun 8, 2026
60ddd38
Revert "Update ci.yml"
KRRT7 Jun 8, 2026
78b5f84
re-order imports
KRRT7 Jun 8, 2026
e3f6c83
Merge remote-tracking branch 'origin/main' into ui-refactor-perf
KRRT7 Jun 12, 2026
d9e363c
Resolve build_env merge conflict
KRRT7 Jun 16, 2026
d2438d1
Remove unused build_env import
KRRT7 Jun 16, 2026
6e06b55
Merge branch 'main' into ui-refactor-perf
KRRT7 Jun 17, 2026
9a92be4
Address UI spinner review feedback
KRRT7 Jun 17, 2026
602a0bb
Fix spinner console fallback
KRRT7 Jun 17, 2026
db56224
Merge branch 'main' into ui-refactor-perf
KRRT7 Jun 17, 2026
8a89dc5
Preserve legacy build status output
KRRT7 Jun 18, 2026
182a77d
Merge remote-tracking branch 'upstream/main' into pr/14026
KRRT7 Jun 26, 2026
08ffffa
Merge branch 'main' into ui-refactor-perf
KRRT7 Jun 27, 2026
0525ad7
Merge branch 'main' into ui-refactor-perf
KRRT7 Jun 29, 2026
e351a7b
Merge branch 'main' into ui-refactor-perf
KRRT7 Jun 30, 2026
c760425
Merge remote-tracking branch 'upstream/main' into pr-14026
KRRT7 Jul 4, 2026
e8c4ba2
Reduce spinner refactor to minimal API-preserving change
KRRT7 Jul 11, 2026
279f285
Merge branch 'main' into ui-refactor-perf
KRRT7 Jul 11, 2026
8df8f5d
Fix spinner test lint warning
KRRT7 Jul 11, 2026
54be458
bench: add ASV spinner benchmark
KRRT7 Jul 11, 2026
1832cce
bench: fix spinner benchmark pre-commit issues
KRRT7 Jul 11, 2026
4113906
Update AUTHORS.txt
KRRT7 Jul 11, 2026
98f39cb
Bump for release
KRRT7 Jul 11, 2026
026c91d
Bump for development
KRRT7 Jul 11, 2026
25a1cd6
bench: include ASV files in sdist
KRRT7 Jul 11, 2026
b408372
revert accidental release prep changes
KRRT7 Jul 11, 2026
9d66178
Merge branch 'main' into ui-refactor-perf
KRRT7 Jul 18, 2026
fef8122
Preserve completed interactive spinner output
KRRT7 Jul 18, 2026
335c9de
Add PTY spinner comparison harness
KRRT7 Jul 18, 2026
95746cf
Limit Rich status to rich spinner path
KRRT7 Jul 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions news/14028.feature.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Consolidate spinner and progress bar functionality into a unified ``ui`` module and switch to Rich's ``Status`` context manager for proper spinner rendering. This improves performance by eliminating per-line syscall overhead and enabling Rich's optimized terminal batching, while fixing issues with ANSI codes appearing in test output.
Comment thread
notatallshaw marked this conversation as resolved.
Outdated
7 changes: 3 additions & 4 deletions src/pip/_internal/build_env.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
from pip._vendor.packaging.version import Version

from pip import __file__ as pip_location
from pip._internal.cli.spinners import open_rich_spinner, open_spinner
from pip._internal.cli.ui import status
from pip._internal.exceptions import (
BuildDependencyInstallError,
DiagnosticPipError,
Expand Down Expand Up @@ -254,11 +254,10 @@ def install(
identify_requirement = (
f" for {for_req.name}" if for_req and for_req.name else ""
)
with open_spinner(f"Installing {kind}") as spinner:
with status(f"Installing {kind}"):
call_subprocess(
args,
command_desc=f"installing {kind}{identify_requirement}",
spinner=spinner,
**extra_environ,
)

Expand Down Expand Up @@ -331,7 +330,7 @@ def install(
# Hide the logs from the installation of build dependencies.
# They will be shown only if an error occurs.
capture_ctx: ContextManager[StringIO] = capture_logging()
spinner: ContextManager[None] = open_rich_spinner(f"Installing {kind}")
spinner: ContextManager[None] = status(f"Installing {kind}")
else:
# Otherwise, pass-through all logs (with a header).
capture_ctx, spinner = nullcontext(StringIO()), nullcontext()
Expand Down
235 changes: 0 additions & 235 deletions src/pip/_internal/cli/spinners.py

This file was deleted.

Loading
Loading