Download Latest Version v3.11.0 source code.zip (59.7 kB)
Home / v4.7.0
Name Modified Size InfoDownloads / Week
Parent folder
progressbar2-4.7.0-py3-none-any.whl.asc 2026-11-12 870 Bytes
progressbar2-4.7.0.tar.gz.asc 2026-11-12 870 Bytes
SHA256SUMS 2026-11-12 194 Bytes
SHA256SUMS.asc 2026-11-12 870 Bytes
progressbar2-4.7.0-py3-none-any.whl.sigstore.json 2026-11-12 7.3 kB
progressbar2-4.7.0.tar.gz.sigstore.json 2026-11-12 7.3 kB
progressbar2-4.7.0-py3-none-any.whl 2026-11-06 151.0 kB
progressbar2-4.7.0.tar.gz 2026-11-06 751.5 kB
README.md 2026-11-05 3.1 kB
v4.7.0 source code.tar.gz 2026-11-05 739.2 kB
v4.7.0 source code.zip 2026-11-05 904.3 kB
Totals: 11 Items   2.6 MB 0

Highlights since 4.6.0:

Colours

  • Widgets are coloured by default: a bar on a colour terminal shows the default palette without enable_colors=True, spinners cycle through colours (color_cycle, HueGradient, rainbow). Output to a file or pipe is unchanged; progressbar.utils.no_color() strips the escapes from a widget called directly.
  • The Bar fill colours are constructor arguments (fg, bg); the Bar.fg and Bar.bg class attributes are gone.

Parallel execution

  • progressbar.map, imap, imap_unordered, starmap, thread_map, process_map, as_completed, the asyncio amap, aimap, aimap_unordered and gather, run for shell commands and the progressbar.parallel decorator, with bar='multi' for an overall bar plus one per task (#327).

Performance

  • A forced redraw of the default widgets is 20 percent faster than 4.6.0 with colours on; the fast path, the iterator overhead and the import time are at or below their 4.6.0 cost (#333). Colour escapes are cached per gradient and colour, templates are validated once, captured writes take a cheaper lock.

Security and hardening (#330)

  • New-style templates such as FormatLabel('{value.__class__}') raise ValueError: a template walking dunder or frame attributes could reach interpreter internals. Index access and ordinary attributes keep working.
  • Captured output survives a drain failure on the other stream, unwrapping restores the original stream even with a closed capture buffer, and the stream locks reset after fork. StreamWrapper.lock and listeners_lock are read-only properties.
  • MultiBar membership changes and expiry share one guard and track bars by identity.
  • The CLI validates every argument before opening the output file, exits 2 with a usage line on an invalid option and 130 after Ctrl-C, and ends quietly with status 0 when the pipeline's reader goes away.

Fixes

  • The fast bar reserves the width of prefix, desc and suffix, so a labelled bar no longer overflows the terminal (contributed by @rupayon123 in [#331]).
  • desc renders as a template, as in 4.6.0; a literal brace is doubled (#334).
  • PROGRESSBAR_MINIMUM_UPDATE_INTERVAL set to a non-numeric value is logged once and ignored instead of raising at the first bar.
  • Deprecation warnings for maxval, poll and currval name the caller's file and line.

Compatibility

  • Requires python-utils >= 4.1.4 (was 3.8.1): older releases render a negative scale_1024 power as 0.1 YiB.
  • Full list in CHANGES.rst (github.com).

Signed on 2026-11-12 with ppt sign, after the release. The files above are the exact PyPI uploads for this version, verified by sha256 against PyPI before signing. Each file has a GPG signature (.asc, key 149325FD15904E9C4EB89E95E81444E9CE1F695D) and a Sigstore bundle (.sigstore.json). SHA256SUMS.asc signs the checksum list. Rebuilt files, if any: none. How to verify: https://github.com/WoLpH/python-project-tools/blob/master/VERIFY.md

Source: README.md, updated 2026-11-05