Repository navigation
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
Barfill colours are constructor arguments (fg,bg); theBar.fgandBar.bgclass attributes are gone.
Parallel execution
progressbar.map,imap,imap_unordered,starmap,thread_map,process_map,as_completed, the asyncioamap,aimap,aimap_unorderedandgather,runfor shell commands and theprogressbar.paralleldecorator, withbar='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__}')raiseValueError: 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.lockandlisteners_lockare read-only properties. MultiBarmembership 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,descandsuffix, so a labelled bar no longer overflows the terminal (contributed by @rupayon123 in #331). descrenders as a template, as in 4.6.0; a literal brace is doubled (#334).PROGRESSBAR_MINIMUM_UPDATE_INTERVALset to a non-numeric value is logged once and ignored instead of raising at the first bar.- Deprecation warnings for
maxval,pollandcurrvalname the caller's file and line.
Compatibility
- Requires
python-utils >= 4.1.4(was 3.8.1): older releases render a negativescale_1024power as0.1 YiB. - Full list in CHANGES.rst.
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