NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #50 most downloaded on PyPI
Fast, Extensible Progress Meter
Last release 18 days ago
11 Sep 2026
Ships unpredictably
gaps range from 9 days to 1.2 years
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
13 years old
151 releases · first in 2013
propagate and close() on exceptions (#926 <- #548)
close() on exceptions (#926 <- #548)clear()close() (#930 <- #924 <- #918, #677)
fix _utils ImportError => DeprecationWarning (#928 <- #927)
_utils ImportError => DeprecationWarning (#928 <- #927)whl | asc
One column per quarter.
deprecate utils._environ_cols_wrapper
nrows and expose for manual override (#918 -> #924)chunksize in tqdm.contrib.concurrent.process_map (#912)utils._environ_cols_wrapperfix notebook exceptions (#669 <- #650)
notebook exceptions (#669 <- #650)
set_description() when disable=Truecontrib.concurrent: avoid unnecessary len(iterable) (#893)support pandas==1.0.0 (#780, #555)
pandas==1.0.0 (#780, #555)whl | asc
🎉 support pandas==1.0.0 ( #780 , #555 )
📘 minor metadata updates
🛠 minor CI test update
notebook: update disable=None behaviour
notebook: update disable=None behaviour (#880)tqdm.keras: support tensorflow.keras as well as keras (#885)contrib (#882)
tenumerate (#840 <- #480, #402)tzip <= ziptmap <= mapconcurrent module
thread_map <= concurrent.futures.ThreadPoolExecutor.mapprocess_map <= concurrent.futures.ProcessPoolExecutor.mapitertools module (#225) stub
product- keras module tidy and fixes + fix batch_size=None (#869) + add missing pop('size')
keras module tidy and fixes
batch_size=None (#869)pop('size')whl | asc
🧯 keras module tidy and fixes
fix batch_size=None ( #869 )
add missing pop('size')
trim on ncols overflow with ANSI handling (#850, #716 <- #690)
ncols overflow with ANSI handling (#850, #716 <- #690)notebook.reset() (#864)keras.TqdmCallback (#867 <- #835)ncols percentage/pixels (#276)win and osx (#841)py2 threadingfix pandas unhashable func (#862 -> #863)
pandas unhashable func (#862 -> #863)
fix floating point imprecision raising errors
whl | asc
🧯 fix floating point imprecision raising errors ( #859 )
🧯 fix auto gh releases ( travis-ci/dpl#914 )
📘 update CONTRIBUTING ( #84 (comment) )
officially support float for n and total
float for n and total (#802)
notebook: use FloatProgress <= IntProgress (#471, #456)n <= total + epsilon) (#849)contrib submodule (#815)wrapattr, utils.CallbackIOWrapper, contrib.DummyTqdmFile (#84 -> #844)snap deploymentsadd pandas builtin operations check (#843 <- #697)
pandas builtin operations check (#843 <- #697)dedent (#837)isatty() (#713)py3.6 => py3.7whl | asc
🎉 add pandas builtin operations check ( #843 <- #697 )
🔨 avoid unnecessary dedent ( #837 )
🧹 remove unneeded bar logic
🧹 misc code tidy
📘 update documentation
document default argument overriding ( #370 )
add missing isatty() ( #713 )
update badges
add code of conduct
🛠 update framework
clean CI stages
update CI default py3.6 => py3.7
automate snap releases ( #686 <- #685 )
support lock_args for e.g. non-blocking intermediate writes (#838 -> #839)
lock_args for e.g. non-blocking intermediate writes (#838 -> #839)
self.refresh() in more placesTqdmDefaultWriteLock.acquire()better unicode widechar support (#803 -> #410, #805)
stacklevel=2 to warnings (#821)- 🧯 fix CLI entrypoint
expose more custom format params
utilsmain -> cligui partial upgrade (#790)notebook upgrade (#790)
{bar} in bar_format (#594)set_*(refresh) (#740 -> #741)contrib releases (#252)bar_format with unknown totaltqdm_notebook red block on explicit file=None (#791)bar_format (#594, #649)(py)make testpandas, notebook, gui (#245)add {bar} format specifier (#623 -> #799)
{bar} format specifier (#623 -> #799)
[width][type]whl | asc
🎉 add {bar} format specifier ( #623 -> #799 )
[width][type]
📘 add tests and documentation
⚡ update performance tests
add leave=None convenience option for leave = position == 0
leave=None convenience option for leave = position == 0leave=True (#230) and = syntax for CLI options (#761 -> #774)add contributor badges (sourcerer)
pandas==0.25 API change (#780)sourcerer).zenodo.jsonCODEOWNERSfix 'Set changed size during iteration' (#481 -> #700, #754)
tqdm.autonotebook check for $VSCODE_PID (#747 -> #751)multiprocessing in Jython (#698)bool(tqdm(iter)) consistent with bool(iter) (#353 -> #694)awesome-python badgefix notebook with unknown total
notebook with unknown total (#743)support negative update (#432, #545)
unit_scale in notebookreset() function (#547, #545)[python setup.py] make runfix file.encoding==None caused by #598 (#673 -> #676)
file.encoding==None caused by #598 (#673 -> #676)
setup.py test to CIWrite bytes to stdout/stderr in py2
stdout/stderr in py2 (https://bugs.python.org/issue21363, #589 -> #598)
write_bytes parameter for py2/3 default overrideascii parameter (#223 -> #227)
bar_format with unknown total (#282 -> #284)TypeError when unit_scale and unknown totalformat_dictelapsed_s, remaining_s to bar_formatunit option to bar_format (#368)README.rst generation framework
CONTRIBUTING.mdadd and expose format_dict (#562, #482, #494, #656)
leave=Falsedisplay() helper functionformat_dict (#562, #482, #494, #656)
format_meterformat_dict overridingsetup.py refactor
setup.py make
setup.py's built-in make -> py-make>=0.1.9 (#290)requirements-dev.txt and extras_require[dev]fix classmethod lock bug (#617: #457 -> #658)
classmethod lock bug (#617: #457 -> #658)whl | asc
🧯 fix classmethod lock bug ( #617 : #457 -> #658 )
🔍 add unit test to prevent regression
Avoid global multiprocessing locks (#611 -> #617)
TMonitor if it is the current thread (#613 -> #641)py37-dev -> py37 (#622)py26remove deprecated make/dist options
--manpath file not foundmain():argvgitattributesmake/dist optionsremove installation of man pages by default (#460, #628)
--manpath option (#629)whl | asc
🧹 remove installation of man pages by default ( #460 , #628 )
🎉 CLI:add --manpath option ( #629 )
🧯 documentation additions and fixes
fix WeakSet KeyError #548, #553, #596 -> #607
str.isnumeric #605WeakSet KeyError #548, #553, #596 -> #607tqdm_notebook description truncation #582 -> #599unit_scale for rate #608auto -> nowarning autonotebookaddress the FutureWarning in pandas, drop pandas test in py34, add in py37
smoothing (#566 -> #601)pandas updates
FutureWarning in pandas, drop pandas test in py34, add in py37 (#603)pandas axis='index' or 'columns' (#570)stop monitor on shutdown (#571, #572)
find_packages() for submodules (#593)
autonotebook (#586, 1cf3393)autonotebook submodule for automatic selection of notebook/CLI bar (#443, #508)
autonotebook submodule for automatic selection of notebook/CLI bar (#443, #508)
pandas() example documentation (#474)NameError:IntProgress changed to a more helpful ImportError (#187, #451, #558)bool() cast when disable=True (#574)format_sizeof hundreds rounding (#579 -> #581)https)Support pandas 0.23.0 core.groupby module layout (#555 -> #554)
core.groupby module layout (#555 -> #554)tox (tox-dev/tox#648)suppress 10 second warning (refix #323)
update documentation and examples
whl | asc
🧯 minor import syntax fix #496
🧯 re-fix nested overlaps #477
📘 update documentation and examples
🧹 code tidy and abstraction
pos on initialisation (#323, #510 -> #544)
AttributeErrors (#546)
pos on initialisation (#323, #510 -> #544)fp on write() (#383)whl | asc
🧯 fix AttributeError s ( #546 ) + pos on initialisation ( #323 , #510 -> #544 ) + fp on write() ( #383 )
🧯 fix py34 CI
📘 update documentation
Fix disable=True whereiterable has no len() and is not None
disable=True whereiterable has no len() and is not None (#539)ncols to specify tqdm_notebook bar width (#276 -> #292)pandas total (#364 -> #535)progress_apply for pandas.(Series|DataFrame).(rolling|expanding) (#530 -> #537)postfix non-dict documentation noteallow direct non-string assignment to postfix member (lists, dicts, etc) (#382 -> #534)
postfix member (lists, dicts, etc) (#382 -> #534)whl | asc
🔨 allow direct non-string assignment to postfix member (lists, dicts, etc) ( #382 -> #534 )
📘 documentation updates
🔍 unit tests
fix #532 write() with manual position
write() with manual position
TqdmWarning base class__del__()
TqdmExperimentalWarning7zx examplepandas wrapper: remove *args and add better total handling (#244, #299, #322, #366 -> #524)
pandas wrapper: remove *args and add better total handling (#244, #299, #322, #366 -> #524)RuntimeError: Set changed size during iteration -> TqdmSynchronisationWarning (#481)fix monitor thread termination and update tests
avoid uninitialised instance manipulation
RuntimeError (#522 -> #523)whl | asc
🧯 fix monitoring thread issues
avoid uninitialised instance manipulation ( #493 )
fix thread starting RuntimeError ( #522 -> #523 )
🔨 these release notes ( #529 )
Nothing published for this version
--bytes implies --unit B --unit_scale --unit_divisor 1024
--bytes implies --unit B --unit_scale --unit_divisor 1024 (#503)sem_open on aarch64 (#513)set_description in notebook (#345 -> #475)
set_description in notebook (#345 -> #475)whl | asc
🧯 multiprocess/lock fixes ( #457 )
🔨 set_description in notebook ( #345 -> #475 )
🧹 minor tidy ( #476 )
📘 documentation updates
fix Lock:NotImplementedError on certain systems (#466 -> #468)
Lock:NotImplementedError on certain systems (#466 -> #468)flush() on moveto() (#398 -> #399, #420, #467)whl | asc | gz | asc
🧯 fix Lock:NotImplementedError on certain systems ( #466 -> #468 )
🔨 use recursive locks ( #469 -> #468 ) - fix deadlocks
🧹 tidy ( #448 )
🔨 flush() on moveto() ( #398 -> #399 , #420 , #467 )
🔍 update tests and benchmarks
flush() on refresh() (#459 from #317)
flush() on refresh() (#459 from #317)sp() in refresh()clear():nomove=Falsewhl | asc | gz | asc
🔨 flush() on refresh() ( #459 from #317 )
🔨 status printer updates ( #331 ) + use sp() in refresh() + remove redundant clear():nomove=False
📘 misc minor documentation updates
🔍 unit tests
Nothing published for this version
rate_(no)inv(_fmt) (#72, b228bc3)
rate_(no)inv(_fmt) (#72, b228bc3)__repr__() tidy (#389)write() before initialisation AttributeError: _lock (#457)man pageswhl | asc | gz | asc
🔨 rate_(no)inv(_fmt) ( #72 , b228bc3)
🧹 repr() tidy ( #389 )
🧯 fix write() before initialisation AttributeError: _lock ( #457 )
📘 man pages
📘 documentation updates
Thread safety! (#285 -> #291 -> #329, #407, #417)
sys.stdout/stderr (#422)AttributeError fixes (#323, #324, #418)Related to:
concurrent.futures (#97)tqdm (#143)flush() and refresh() (#331)refresh() (#361)initialise n even when disabled
n even when disabled (#438)__repr__() bugfix (#441)whl | asc | gz | asc
🔨 initialise n even when disabled ( #438 )
🎉 better unicode detection ( #437 )
🧯 repr() bugfix ( #441 )
easier redirect of stdout (#426 -> #431)
stdout (#426 -> #431)
cls.external_write_mode() @contextmanagerrefresh=True for set_description/update(_str) (#317 -> #377)whl | asc | gz | asc
🔨 easier redirect of stdout ( #426 -> #431 ) - cls.external_write_mode() @contextmanager
🔨 refresh=True for set_description / update ( _str ) ( #317 -> #377 )
more formatting control (#347 -> #362)
set_postfix_str(), set_description_str()": " to bar_formatwhl | asc | gz | asc
🔨 more formatting control ( #347 -> #362 ) - set_postfix_str() , set_description_str() - move ": " to bar_format - complements #266 , #270
🎉 better CLI support (e.g. hyphenated paths) ( #421 -> #424 )
🔍 more unit tests ( #411 ) - upgrade to pypy2/3-5.8.0 - add py37-dev
📘 doc updates
minor documentation updates (#400, #401, #412)
pandas support (#351 -> #409)setcheckinterval/setswitchinterval (#376)unit_scale (#273, #295 -> #378)- add unit_divisor #354 -> #356 - update examples
unit_divisor #354 -> #356support unknown systems https://github.com/warner/magic-wormhole/issues/158, #76, #344 -> #390
sys.stderr -> None) https://github.com/xonsh/xonsh/issues/2058, #329, #275 -> #293
🎉 support unknown systems warner/magic-wormhole#158 , #76 , #344 -> #390
🎉 support nested/multi-bars better #384 , #285 , #329 -> #385
🔨 ease redirection of output (default: sys.stderr -> None ) xonsh/xonsh#2058 , #329 , #275 -> #293
add examples/redirect_print.py
📘 minor documentation updates
fix monitor race condition #338 -> #339
whl | asc
🧯 fix monitor race condition #338 -> #339
🎉 add explicit NetBSD support #344
🧹 documentation tidy
address DeprecationWarning #319 -> #326
DeprecationWarning #319 -> #326whl | asc | gz | asc
⛑ thread safety #332
🔨 address DeprecationWarning #319 -> #326
🔨 version extra #328 -> #330
security fix ( CVE-2016-10075 )
add non-master branch name
⛑ minor safety
📘 minor documentation and comments
Officially support Python 3.6, addressing #333
Officially support Python 3.6, addressing #333
Your coding agent can read these notes before it upgrades. Set up the MCP server →