Hello community, here is the log from the commit of package python-tqdm for openSUSE:Factory checked in at 2020-08-25 12:36:55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-tqdm (Old) and /work/SRC/openSUSE:Factory/.python-tqdm.new.3399 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-tqdm" Tue Aug 25 12:36:55 2020 rev:36 rq:826985 version:4.48.2 Changes: -------- --- /work/SRC/openSUSE:Factory/python-tqdm/python-tqdm.changes 2020-08-01 12:28:21.450298371 +0200 +++ /work/SRC/openSUSE:Factory/.python-tqdm.new.3399/python-tqdm.changes 2020-08-25 12:36:59.081383199 +0200 @@ -1,0 +2,21 @@ +Sat Aug 15 16:43:55 UTC 2020 - Arun Persaud <[email protected]> + +- update to version 4.48.2: + * fix notebook formatting + +- changes from version 4.48.1: + * fix ANSI escape codes breaking tqdm.write (#692, #777) + * fix long-lived strongref (#1007, + https://bugs.python.org/issue39093) + * fix cli --version crash on missing git/refs/heads (#635) + * fix contrib.tenumerate ignoring total (#1017) + * fix potential deep => shallow kwargs copy issues + * improve notebook display for unknown total (#1015) + * make asyncio inherit from std rather than auto + * make auto multi-inherit from autonotebook, asyncio on Python3.5+ + * misc documentation & examples updates + + mention docker-compose requirements (#771) + * misc linting & tidy + * misc minor testing framework updates + +------------------------------------------------------------------- Old: ---- tqdm-4.48.0.tar.gz New: ---- tqdm-4.48.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-tqdm.spec ++++++ --- /var/tmp/diff_new_pack.or7h0Y/_old 2020-08-25 12:37:00.893384093 +0200 +++ /var/tmp/diff_new_pack.or7h0Y/_new 2020-08-25 12:37:00.897384094 +0200 @@ -28,7 +28,7 @@ %bcond_with test %endif Name: python-tqdm%{pkg_suffix} -Version: 4.48.0 +Version: 4.48.2 Release: 0 Summary: An extensible progress meter License: MPL-2.0 AND MIT ++++++ tqdm-4.48.0.tar.gz -> tqdm-4.48.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tqdm-4.48.0/PKG-INFO new/tqdm-4.48.2/PKG-INFO --- old/tqdm-4.48.0/PKG-INFO 2020-07-17 00:04:14.000000000 +0200 +++ new/tqdm-4.48.2/PKG-INFO 2020-08-03 18:37:15.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: tqdm -Version: 4.48.0 +Version: 4.48.2 Summary: Fast, Extensible Progress Meter Home-page: https://github.com/tqdm/tqdm Maintainer: tqdm developers @@ -15,7 +15,7 @@ |Build-Status| |Coverage-Status| |Branch-Coverage-Status| |Codacy-Grade| |Libraries-Rank| |PyPI-Downloads| - |DOI| |LICENCE| |OpenHub-Status| |binder-demo| |notebook-demo| |awesome-python| + |LICENCE| |OpenHub-Status| |binder-demo| |notebook-demo| |awesome-python| ``tqdm`` derives from the Arabic word *taqaddum* (تقدّم) which can mean "progress," and is an abbreviation for "I love you so much" in Spanish (*te quiero demasiado*). @@ -328,6 +328,8 @@ - `Hanging pipes in python2 <https://github.com/tqdm/tqdm/issues/359>`__: when using ``tqdm`` on the CLI, you may need to use Python 3.5+ for correct buffering. + - `No intermediate output in docker-compose <https://github.com/tqdm/tqdm/issues/771>`__: + use ``docker-compose run`` instead of ``docker-compose up`` and ``tty: true``. If you come across any other difficulties, browse and file |GitHub-Issues|. @@ -1262,7 +1264,7 @@ Open Source (OSI approved): |LICENCE| - Citation information: |DOI| (publication), |DOI-code| (code) + Citation information: |DOI| |README-Hits| (Since 19 May 2016) @@ -1322,9 +1324,7 @@ :target: https://github.com/vinta/awesome-python .. |LICENCE| image:: https://img.shields.io/pypi/l/tqdm.svg :target: https://raw.githubusercontent.com/tqdm/tqdm/master/LICENCE - .. |DOI| image:: https://img.shields.io/badge/DOI-10.21105/joss.01277-green.svg - :target: https://doi.org/10.21105/joss.01277 - .. |DOI-code| image:: https://img.shields.io/badge/DOI-10.5281/zenodo.595120-blue.svg + .. |DOI| image:: https://img.shields.io/badge/DOI-10.5281/zenodo.595120-blue.svg :target: https://doi.org/10.5281/zenodo.595120 .. |notebook-demo| image:: https://img.shields.io/badge/launch-notebook-orange.svg?logo=jupyter :target: https://notebooks.ai/demo/gh/tqdm/tqdm diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tqdm-4.48.0/README.rst new/tqdm-4.48.2/README.rst --- old/tqdm-4.48.0/README.rst 2020-07-17 00:04:13.000000000 +0200 +++ new/tqdm-4.48.2/README.rst 2020-08-03 18:37:13.000000000 +0200 @@ -7,7 +7,7 @@ |Build-Status| |Coverage-Status| |Branch-Coverage-Status| |Codacy-Grade| |Libraries-Rank| |PyPI-Downloads| -|DOI| |LICENCE| |OpenHub-Status| |binder-demo| |notebook-demo| |awesome-python| +|LICENCE| |OpenHub-Status| |binder-demo| |notebook-demo| |awesome-python| ``tqdm`` derives from the Arabic word *taqaddum* (تقدّم) which can mean "progress," and is an abbreviation for "I love you so much" in Spanish (*te quiero demasiado*). @@ -320,6 +320,8 @@ - `Hanging pipes in python2 <https://github.com/tqdm/tqdm/issues/359>`__: when using ``tqdm`` on the CLI, you may need to use Python 3.5+ for correct buffering. +- `No intermediate output in docker-compose <https://github.com/tqdm/tqdm/issues/771>`__: + use ``docker-compose run`` instead of ``docker-compose up`` and ``tty: true``. If you come across any other difficulties, browse and file |GitHub-Issues|. @@ -1254,7 +1256,7 @@ Open Source (OSI approved): |LICENCE| -Citation information: |DOI| (publication), |DOI-code| (code) +Citation information: |DOI| |README-Hits| (Since 19 May 2016) @@ -1314,9 +1316,7 @@ :target: https://github.com/vinta/awesome-python .. |LICENCE| image:: https://img.shields.io/pypi/l/tqdm.svg :target: https://raw.githubusercontent.com/tqdm/tqdm/master/LICENCE -.. |DOI| image:: https://img.shields.io/badge/DOI-10.21105/joss.01277-green.svg - :target: https://doi.org/10.21105/joss.01277 -.. |DOI-code| image:: https://img.shields.io/badge/DOI-10.5281/zenodo.595120-blue.svg +.. |DOI| image:: https://img.shields.io/badge/DOI-10.5281/zenodo.595120-blue.svg :target: https://doi.org/10.5281/zenodo.595120 .. |notebook-demo| image:: https://img.shields.io/badge/launch-notebook-orange.svg?logo=jupyter :target: https://notebooks.ai/demo/gh/tqdm/tqdm diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tqdm-4.48.0/examples/async_coroutines.py new/tqdm-4.48.2/examples/async_coroutines.py --- old/tqdm-4.48.0/examples/async_coroutines.py 2020-07-17 00:03:58.000000000 +0200 +++ new/tqdm-4.48.2/examples/async_coroutines.py 2020-08-03 18:36:57.000000000 +0200 @@ -27,8 +27,9 @@ elif row < 0: assert row == -9 break - # should be under 10 seconds - for i in tqdm.as_completed(list(map(asyncio.sleep, [1] * 10)), + # should be ~1sec rather than ~50s due to async scheduling + for i in tqdm.as_completed([asyncio.sleep(0.01 * i) + for i in range(100, 0, -1)], desc="as_completed"): await i diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tqdm-4.48.0/tqdm/_monitor.py new/tqdm-4.48.2/tqdm/_monitor.py --- old/tqdm-4.48.0/tqdm/_monitor.py 2020-07-17 00:03:58.000000000 +0200 +++ new/tqdm-4.48.2/tqdm/_monitor.py 2020-08-03 18:36:57.000000000 +0200 @@ -90,10 +90,14 @@ instance.miniters = 1 # Refresh now! (works only for manual tqdm) instance.refresh(nolock=True) + # Remove accidental long-lived strong reference + del instance if instances != self.get_instances(): # pragma: nocover warn("Set changed size during iteration" + " (see https://github.com/tqdm/tqdm/issues/481)", TqdmSynchronisationWarning, stacklevel=2) + # Remove accidental long-lived strong references + del instances def report(self): return not self.was_killed.is_set() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tqdm-4.48.0/tqdm/_version.py new/tqdm-4.48.2/tqdm/_version.py --- old/tqdm-4.48.0/tqdm/_version.py 2020-07-17 00:03:58.000000000 +0200 +++ new/tqdm-4.48.2/tqdm/_version.py 2020-08-03 18:36:57.000000000 +0200 @@ -5,7 +5,7 @@ __all__ = ["__version__"] # major, minor, patch, -extra -version_info = 4, 48, 0 +version_info = 4, 48, 2 # Nice string for the version __version__ = '.'.join(map(str, version_info)) @@ -15,45 +15,48 @@ scriptdir = os.path.dirname(__file__) gitdir = os.path.abspath(os.path.join(scriptdir, "..", ".git")) if os.path.isdir(gitdir): # pragma: nocover - extra = None - # Open config file to check if we are in tqdm project - with io_open(os.path.join(gitdir, "config"), 'r') as fh_config: - if 'tqdm' in fh_config.read(): - # Open the HEAD file - with io_open(os.path.join(gitdir, "HEAD"), 'r') as fh_head: - extra = fh_head.readline().strip() - # in a branch => HEAD points to file containing last commit - if 'ref:' in extra: - # reference file path - ref_file = extra[5:] - branch_name = ref_file.rsplit('/', 1)[-1] - - ref_file_path = os.path.abspath(os.path.join(gitdir, ref_file)) - # check that we are in git folder - # (by stripping the git folder from the ref file path) - if os.path.relpath( - ref_file_path, gitdir).replace('\\', '/') != ref_file: - # out of git folder - extra = None + try: + extra = None + # Open config file to check if we are in tqdm project + with io_open(os.path.join(gitdir, "config"), 'r') as fh_config: + if 'tqdm' in fh_config.read(): + # Open the HEAD file + with io_open(os.path.join(gitdir, "HEAD"), 'r') as fh_head: + extra = fh_head.readline().strip() + # in a branch => HEAD points to file containing last commit + if 'ref:' in extra: + # reference file path + ref_file = extra[5:] + branch_name = ref_file.rsplit('/', 1)[-1] + + ref_file_path = os.path.abspath(os.path.join( + gitdir, ref_file)) + # check that we are in git folder + # (by stripping the git folder from the ref file path) + if os.path.relpath(ref_file_path, gitdir).replace( + '\\', '/') != ref_file: + # out of git folder + extra = None + else: + # open the ref file + with io_open(ref_file_path, 'r') as fh_branch: + commit_hash = fh_branch.readline().strip() + extra = commit_hash[:8] + if branch_name != "master": + extra += '.' + branch_name + + # detached HEAD mode, already have commit hash else: - # open the ref file - with io_open(ref_file_path, 'r') as fh_branch: - commit_hash = fh_branch.readline().strip() - extra = commit_hash[:8] - if branch_name != "master": - extra += '.' + branch_name - - # detached HEAD mode, already have commit hash - else: - extra = extra[:8] - - # Append commit hash (and branch) to version string if not tagged - if extra is not None: - try: + extra = extra[:8] + + # Append commit hash (and branch) to version string if not tagged + if extra is not None: with io_open(os.path.join(gitdir, "refs", "tags", 'v' + __version__)) as fdv: if fdv.readline().strip()[:8] != extra[:8]: __version__ += '-' + extra - except Exception as e: - if "No such file" not in str(e): - raise + except Exception as e: + if "No such file" in str(e): + __version__ += "-git.UNKNOWN" + else: + raise diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tqdm-4.48.0/tqdm/asyncio.py new/tqdm-4.48.2/tqdm/asyncio.py --- old/tqdm-4.48.0/tqdm/asyncio.py 2020-07-17 00:03:58.000000000 +0200 +++ new/tqdm-4.48.2/tqdm/asyncio.py 2020-08-03 18:36:57.000000000 +0200 @@ -7,13 +7,16 @@ >>> async for i in trange(10): ... ... """ -from .auto import tqdm as tqdm_auto +from .std import tqdm as std_tqdm import asyncio __author__ = {"github.com/": ["casperdcl"]} __all__ = ['tqdm_asyncio', 'tarange', 'tqdm', 'trange'] -class tqdm_asyncio(tqdm_auto): +class tqdm_asyncio(std_tqdm): + """ + Asynchronous-friendly version of tqdm (Python 3.5+). + """ def __init__(self, iterable=None, *args, **kwargs): super(tqdm_asyncio, self).__init__(iterable, *args, **kwargs) self.iterable_awaitable = False diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tqdm-4.48.0/tqdm/auto.py new/tqdm-4.48.2/tqdm/auto.py --- old/tqdm-4.48.0/tqdm/auto.py 2020-07-17 00:03:58.000000000 +0200 +++ new/tqdm-4.48.2/tqdm/auto.py 2020-08-03 18:36:57.000000000 +0200 @@ -1,14 +1,42 @@ """ -`tqdm.autonotebook` but without import warnings. +Enables multiple commonly used features. + +Method resolution order: + +- `tqdm.autonotebook` without import warnings +- `tqdm.asyncio` on Python3.5+ +- `tqdm.std` base class Usage: >>> from tqdm.auto import trange, tqdm >>> for i in trange(10): ... ... """ +import sys import warnings from .std import TqdmExperimentalWarning with warnings.catch_warnings(): warnings.simplefilter("ignore", category=TqdmExperimentalWarning) - from .autonotebook import tqdm, trange + from .autonotebook import tqdm as notebook_tqdm + from .autonotebook import trange as notebook_trange + +if sys.version_info[:1] < (3, 4): + tqdm = notebook_tqdm + trange = notebook_trange +else: # Python3.5+ + from .asyncio import tqdm as asyncio_tqdm + from .std import tqdm as std_tqdm + + if notebook_tqdm != std_tqdm: + class tqdm(notebook_tqdm, asyncio_tqdm): + pass + else: + tqdm = asyncio_tqdm + + def trange(*args, **kwargs): + """ + A shortcut for `tqdm.auto.tqdm(range(*args), **kwargs)`. + """ + return tqdm(range(*args), **kwargs) + __all__ = ["tqdm", "trange"] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tqdm-4.48.0/tqdm/contrib/__init__.py new/tqdm-4.48.2/tqdm/contrib/__init__.py --- old/tqdm-4.48.0/tqdm/contrib/__init__.py 2020-07-17 00:03:58.000000000 +0200 +++ new/tqdm-4.48.2/tqdm/contrib/__init__.py 2020-08-03 18:36:57.000000000 +0200 @@ -6,8 +6,7 @@ from tqdm import tqdm from tqdm.auto import tqdm as tqdm_auto from tqdm.utils import ObjectWrapper -from copy import deepcopy -import functools +from functools import wraps import sys __author__ = {"github.com/": ["casperdcl"]} __all__ = ['tenumerate', 'tzip', 'tmap'] @@ -21,6 +20,16 @@ tqdm.write(x, file=self._wrapped, nolock=nolock) +def builtin_iterable(func): + """Wraps `func()` output in a `list()` in py2""" + if sys.version_info[:1] < (3,): + @wraps(func) + def inner(*args, **kwargs): + return list(func(*args, **kwargs)) + return inner + return func + + def tenumerate(iterable, start=0, total=None, tqdm_class=tqdm_auto, **tqdm_kwargs): """ @@ -38,10 +47,11 @@ if isinstance(iterable, np.ndarray): return tqdm_class(np.ndenumerate(iterable), total=total or iterable.size, **tqdm_kwargs) - return enumerate(tqdm_class(iterable, **tqdm_kwargs), start) + return enumerate(tqdm_class(iterable, total=total, **tqdm_kwargs), start) -def _tzip(iter1, *iter2plus, **tqdm_kwargs): +@builtin_iterable +def tzip(iter1, *iter2plus, **tqdm_kwargs): """ Equivalent of builtin `zip`. @@ -49,13 +59,14 @@ ---------- tqdm_class : [default: tqdm.auto.tqdm]. """ - kwargs = deepcopy(tqdm_kwargs) + kwargs = tqdm_kwargs.copy() tqdm_class = kwargs.pop("tqdm_class", tqdm_auto) for i in zip(tqdm_class(iter1, **tqdm_kwargs), *iter2plus): yield i -def _tmap(function, *sequences, **tqdm_kwargs): +@builtin_iterable +def tmap(function, *sequences, **tqdm_kwargs): """ Equivalent of builtin `map`. @@ -63,18 +74,5 @@ ---------- tqdm_class : [default: tqdm.auto.tqdm]. """ - for i in _tzip(*sequences, **tqdm_kwargs): + for i in tzip(*sequences, **tqdm_kwargs): yield function(*i) - - -if sys.version_info[:1] < (3,): - @functools.wraps(_tzip) - def tzip(*args, **kwargs): - return list(_tzip(*args, **kwargs)) - - @functools.wraps(_tmap) - def tmap(*args, **kwargs): - return list(_tmap(*args, **kwargs)) -else: - tzip = _tzip - tmap = _tmap diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tqdm-4.48.0/tqdm/contrib/bells.py new/tqdm-4.48.2/tqdm/contrib/bells.py --- old/tqdm-4.48.0/tqdm/contrib/bells.py 2020-07-17 00:03:58.000000000 +0200 +++ new/tqdm-4.48.2/tqdm/contrib/bells.py 2020-08-03 18:36:57.000000000 +0200 @@ -1,5 +1,5 @@ """ -All the bells & whistles: +Even more features than `tqdm.auto` (all the bells & whistles): - `tqdm.auto` - `tqdm.tqdm.pandas` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tqdm-4.48.0/tqdm/contrib/concurrent.py new/tqdm-4.48.2/tqdm/contrib/concurrent.py --- old/tqdm-4.48.0/tqdm/contrib/concurrent.py 2020-07-17 00:03:58.000000000 +0200 +++ new/tqdm-4.48.2/tqdm/contrib/concurrent.py 2020-08-03 18:36:57.000000000 +0200 @@ -4,7 +4,6 @@ from __future__ import absolute_import from tqdm import TqdmWarning from tqdm.auto import tqdm as tqdm_auto -from copy import deepcopy try: from operator import length_hint except ImportError: @@ -37,7 +36,7 @@ max_workers : [default: min(32, cpu_count() + 4)]. chunksize : [default: 1]. """ - kwargs = deepcopy(tqdm_kwargs) + kwargs = tqdm_kwargs.copy() if "total" not in kwargs: kwargs["total"] = len(iterables[0]) tqdm_class = kwargs.pop("tqdm_class", tqdm_auto) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tqdm-4.48.0/tqdm/contrib/discord.py new/tqdm-4.48.2/tqdm/contrib/discord.py --- old/tqdm-4.48.0/tqdm/contrib/discord.py 2020-07-17 00:03:58.000000000 +0200 +++ new/tqdm-4.48.2/tqdm/contrib/discord.py 2020-08-03 18:36:57.000000000 +0200 @@ -10,7 +10,6 @@ https://raw.githubusercontent.com/tqdm/img/src/screenshot-discord.png) """ from __future__ import absolute_import -from copy import deepcopy import logging from os import getenv @@ -84,7 +83,7 @@ See `tqdm.auto.tqdm.__init__` for other parameters. """ - kwargs = deepcopy(kwargs) + kwargs = kwargs.copy() logging.getLogger("HTTPClient").setLevel(logging.WARNING) self.dio = DiscordIO( kwargs.pop('token', getenv("TQDM_DISCORD_TOKEN")), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tqdm-4.48.0/tqdm/contrib/itertools.py new/tqdm-4.48.2/tqdm/contrib/itertools.py --- old/tqdm-4.48.0/tqdm/contrib/itertools.py 2020-07-17 00:03:58.000000000 +0200 +++ new/tqdm-4.48.2/tqdm/contrib/itertools.py 2020-08-03 18:36:57.000000000 +0200 @@ -3,7 +3,6 @@ """ from __future__ import absolute_import from tqdm.auto import tqdm as tqdm_auto -from copy import deepcopy import itertools __author__ = {"github.com/": ["casperdcl"]} __all__ = ['product'] @@ -17,7 +16,7 @@ ---------- tqdm_class : [default: tqdm.auto.tqdm]. """ - kwargs = deepcopy(tqdm_kwargs) + kwargs = tqdm_kwargs.copy() tqdm_class = kwargs.pop("tqdm_class", tqdm_auto) try: lens = list(map(len, iterables)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tqdm-4.48.0/tqdm/contrib/telegram.py new/tqdm-4.48.2/tqdm/contrib/telegram.py --- old/tqdm-4.48.0/tqdm/contrib/telegram.py 2020-07-17 00:03:58.000000000 +0200 +++ new/tqdm-4.48.2/tqdm/contrib/telegram.py 2020-08-03 18:36:57.000000000 +0200 @@ -10,7 +10,6 @@ https://raw.githubusercontent.com/tqdm/img/src/screenshot-telegram.gif) """ from __future__ import absolute_import -from copy import deepcopy from os import getenv from requests import Session @@ -91,7 +90,7 @@ See `tqdm.auto.tqdm.__init__` for other parameters. """ - kwargs = deepcopy(kwargs) + kwargs = kwargs.copy() self.tgio = TelegramIO( kwargs.pop('token', getenv('TQDM_TELEGRAM_TOKEN')), kwargs.pop('chat_id', getenv('TQDM_TELEGRAM_CHAT_ID'))) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tqdm-4.48.0/tqdm/keras.py new/tqdm-4.48.2/tqdm/keras.py --- old/tqdm-4.48.0/tqdm/keras.py 2020-07-17 00:03:58.000000000 +0200 +++ new/tqdm-4.48.2/tqdm/keras.py 2020-08-03 18:36:57.000000000 +0200 @@ -1,6 +1,6 @@ from __future__ import absolute_import, division from .auto import tqdm as tqdm_auto -from copy import deepcopy +from copy import copy try: import keras except ImportError as e: @@ -20,7 +20,7 @@ n = delta(logs) if logs: if pop: - logs = deepcopy(logs) + logs = copy(logs) [logs.pop(i, 0) for i in pop] bar.set_postfix(logs, refresh=False) bar.update(n) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tqdm-4.48.0/tqdm/notebook.py new/tqdm-4.48.2/tqdm/notebook.py --- old/tqdm-4.48.0/tqdm/notebook.py 2020-07-17 00:03:58.000000000 +0200 +++ new/tqdm-4.48.2/tqdm/notebook.py 2020-08-03 18:36:57.000000000 +0200 @@ -103,6 +103,8 @@ pbar = IProgress(min=0, max=1) pbar.value = 1 pbar.bar_style = 'info' + if ncols is None: + pbar.layout.width = "20px" if desc: pbar.description = desc @@ -129,6 +131,13 @@ return container + @staticmethod + def format_meter(n, total, *args, **kwargs): + if total and kwargs.get('bar_format', None) is None: + kwargs = kwargs.copy() + kwargs['bar_format'] = "{l_bar}<bar/>{r_bar}" + return std_tqdm.format_meter(n, total, *args, **kwargs) + def display(self, msg=None, pos=None, # additional signals close=False, bar_style=None): @@ -182,6 +191,7 @@ self.container.visible = False def __init__(self, *args, **kwargs): + kwargs = kwargs.copy() # Setup default output file_kwarg = kwargs.get('file', sys.stderr) if file_kwarg is sys.stderr or file_kwarg is None: @@ -189,8 +199,9 @@ # Initialize parent class + avoid printing by using gui=True kwargs['gui'] = True - kwargs.setdefault('bar_format', '{l_bar}{bar}{r_bar}') - kwargs['bar_format'] = kwargs['bar_format'].replace('{bar}', '<bar/>') + if 'bar_format' in kwargs: + kwargs['bar_format'] = kwargs['bar_format'].replace( + '{bar}', '<bar/>') # convert disable = None to False kwargs['disable'] = bool(kwargs.get('disable', False)) super(tqdm_notebook, self).__init__(*args, **kwargs) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tqdm-4.48.0/tqdm/std.py new/tqdm-4.48.2/tqdm/std.py --- old/tqdm-4.48.0/tqdm/std.py 2020-07-17 00:03:58.000000000 +0200 +++ new/tqdm-4.48.2/tqdm/std.py 2020-08-03 18:36:57.000000000 +0200 @@ -301,7 +301,7 @@ last_len = [0] def print_status(s): - len_s = len(s) + len_s = disp_len(s) fp_write('\r' + s + (' ' * max(last_len[0] - len_s, 0))) last_len[0] = len_s diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tqdm-4.48.0/tqdm/tests/py37_asyncio.py new/tqdm-4.48.2/tqdm/tests/py37_asyncio.py --- old/tqdm-4.48.0/tqdm/tests/py37_asyncio.py 2020-07-17 00:03:58.000000000 +0200 +++ new/tqdm-4.48.2/tqdm/tests/py37_asyncio.py 2020-08-03 18:36:57.000000000 +0200 @@ -37,15 +37,15 @@ async def test_generators(): """Test asyncio generators""" with closing(StringIO()) as our_file: - async for row in tqdm(count(), desc="counter", file=our_file): - if row >= 8: + async for i in tqdm(count(), desc="counter", file=our_file): + if i >= 8: break assert '9it' in our_file.getvalue() our_file.seek(0) our_file.truncate() - async for row in tqdm(acount(), desc="async_counter", file=our_file): - if row >= 8: + async for i in tqdm(acount(), desc="async_counter", file=our_file): + if i >= 8: break assert '9it' in our_file.getvalue() @@ -54,13 +54,13 @@ async def test_range(): """Test asyncio range""" with closing(StringIO()) as our_file: - async for row in tqdm(range(9), desc="range", file=our_file): + async for _ in tqdm(range(9), desc="range", file=our_file): pass assert '9/9' in our_file.getvalue() our_file.seek(0) our_file.truncate() - async for row in trange(9, desc="trange", file=our_file): + async for _ in trange(9, desc="trange", file=our_file): pass assert '9/9' in our_file.getvalue() @@ -69,8 +69,8 @@ async def test_nested(): """Test asyncio nested""" with closing(StringIO()) as our_file: - async for row in tqdm(trange(9, desc="inner", file=our_file), - desc="outer", file=our_file): + async for _ in tqdm(trange(9, desc="inner", file=our_file), + desc="outer", file=our_file): pass assert 'inner: 100%' in our_file.getvalue() assert 'outer: 100%' in our_file.getvalue() @@ -81,11 +81,11 @@ """Test asyncio coroutine.send""" with closing(StringIO()) as our_file: with tqdm(count(), file=our_file) as pbar: - async for row in pbar: - if row == 9: + async for i in pbar: + if i == 9: pbar.send(-10) - elif row < 0: - assert row == -9 + elif i < 0: + assert i == -9 break assert '10it' in our_file.getvalue() @@ -96,8 +96,8 @@ with closing(StringIO()) as our_file: t = time() skew = time() - t - for i in as_completed([asyncio.sleep(0.01) for _ in range(100)], - file=our_file): + for i in as_completed([asyncio.sleep(0.01 * i) + for i in range(30, 0, -1)], file=our_file): await i - assert time() - t - 2 * skew < (0.01 * 100) / 2, "Assuming >= 2 cores" - assert '100/100' in our_file.getvalue() + assert 0.29 < time() - t - 2 * skew < 0.31 + assert '30/30' in our_file.getvalue() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tqdm-4.48.0/tqdm/tests/tests_contrib.py new/tqdm-4.48.2/tqdm/tests/tests_contrib.py --- old/tqdm-4.48.0/tqdm/tests/tests_contrib.py 2020-07-17 00:03:58.000000000 +0200 +++ new/tqdm-4.48.2/tqdm/tests/tests_contrib.py 2020-08-03 18:36:57.000000000 +0200 @@ -19,6 +19,12 @@ a = range(9) assert list(tenumerate(a, file=our_file)) == list(enumerate(a)) assert list(tenumerate(a, 42, file=our_file)) == list(enumerate(a, 42)) + with closing(StringIO()) as our_file: + _ = list(tenumerate((i for i in a), file=our_file)) + assert "100%" not in our_file.getvalue() + with closing(StringIO()) as our_file: + _ = list(tenumerate((i for i in a), file=our_file, total=len(a))) + assert "100%" in our_file.getvalue() @with_setup(pretest, posttest) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tqdm-4.48.0/tqdm/tests/tests_perf.py new/tqdm-4.48.2/tqdm/tests/tests_perf.py --- old/tqdm-4.48.0/tqdm/tests/tests_perf.py 2020-07-17 00:03:58.000000000 +0200 +++ new/tqdm-4.48.2/tqdm/tests/tests_perf.py 2020-08-03 18:36:57.000000000 +0200 @@ -240,7 +240,6 @@ from threading import RLock except ImportError: raise SkipTest - import sys total = 8 subtotal = 1000 @@ -283,7 +282,7 @@ a += i our_file.write(("%i" % a) * 40) - assert_performance(85, 'trange', time_tqdm(), 'range', time_bench()) + assert_performance(125, 'trange', time_tqdm(), 'range', time_bench()) @with_setup(pretest, posttest) @@ -308,7 +307,7 @@ a += i our_file.write(("%i" % a) * 40) - assert_performance(85, 'tqdm', time_tqdm(), 'range', time_bench()) + assert_performance(125, 'tqdm', time_tqdm(), 'range', time_bench()) @with_setup(pretest, posttest) @@ -335,7 +334,7 @@ a += i assert_performance( - 5, 'trange', time_tqdm(), 'simple_progress', time_bench()) + 7.5, 'trange', time_tqdm(), 'simple_progress', time_bench()) @with_setup(pretest, posttest) @@ -364,4 +363,4 @@ simplebar_update(10) assert_performance( - 5, 'tqdm', time_tqdm(), 'simple_progress', time_bench()) + 7.5, 'tqdm', time_tqdm(), 'simple_progress', time_bench()) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tqdm-4.48.0/tqdm/tests/tests_tqdm.py new/tqdm-4.48.2/tqdm/tests/tests_tqdm.py --- old/tqdm-4.48.0/tqdm/tests/tests_tqdm.py 2020-07-17 00:03:58.000000000 +0200 +++ new/tqdm-4.48.2/tqdm/tests/tests_tqdm.py 2020-08-03 18:36:57.000000000 +0200 @@ -920,12 +920,12 @@ def test_nototal(): """Test unknown total length""" with closing(StringIO()) as our_file: - for i in tqdm((i for i in range(10)), file=our_file, unit_scale=10): + for _ in tqdm((i for i in range(10)), file=our_file, unit_scale=10): pass assert "100it" in our_file.getvalue() with closing(StringIO()) as our_file: - for i in tqdm((i for i in range(10)), file=our_file, + for _ in tqdm((i for i in range(10)), file=our_file, bar_format="{l_bar}{bar}{r_bar}"): pass assert "10/?" in our_file.getvalue() @@ -1196,7 +1196,7 @@ return d with closing(StringIO()) as our_file: - for i in TqdmExtraFormat( + for _ in TqdmExtraFormat( range(10), file=our_file, bar_format="{total_time}: {percentage:.0f}%|{bar}{r_bar}"): pass diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tqdm-4.48.0/tqdm.egg-info/PKG-INFO new/tqdm-4.48.2/tqdm.egg-info/PKG-INFO --- old/tqdm-4.48.0/tqdm.egg-info/PKG-INFO 2020-07-17 00:04:14.000000000 +0200 +++ new/tqdm-4.48.2/tqdm.egg-info/PKG-INFO 2020-08-03 18:37:15.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: tqdm -Version: 4.48.0 +Version: 4.48.2 Summary: Fast, Extensible Progress Meter Home-page: https://github.com/tqdm/tqdm Maintainer: tqdm developers @@ -15,7 +15,7 @@ |Build-Status| |Coverage-Status| |Branch-Coverage-Status| |Codacy-Grade| |Libraries-Rank| |PyPI-Downloads| - |DOI| |LICENCE| |OpenHub-Status| |binder-demo| |notebook-demo| |awesome-python| + |LICENCE| |OpenHub-Status| |binder-demo| |notebook-demo| |awesome-python| ``tqdm`` derives from the Arabic word *taqaddum* (تقدّم) which can mean "progress," and is an abbreviation for "I love you so much" in Spanish (*te quiero demasiado*). @@ -328,6 +328,8 @@ - `Hanging pipes in python2 <https://github.com/tqdm/tqdm/issues/359>`__: when using ``tqdm`` on the CLI, you may need to use Python 3.5+ for correct buffering. + - `No intermediate output in docker-compose <https://github.com/tqdm/tqdm/issues/771>`__: + use ``docker-compose run`` instead of ``docker-compose up`` and ``tty: true``. If you come across any other difficulties, browse and file |GitHub-Issues|. @@ -1262,7 +1264,7 @@ Open Source (OSI approved): |LICENCE| - Citation information: |DOI| (publication), |DOI-code| (code) + Citation information: |DOI| |README-Hits| (Since 19 May 2016) @@ -1322,9 +1324,7 @@ :target: https://github.com/vinta/awesome-python .. |LICENCE| image:: https://img.shields.io/pypi/l/tqdm.svg :target: https://raw.githubusercontent.com/tqdm/tqdm/master/LICENCE - .. |DOI| image:: https://img.shields.io/badge/DOI-10.21105/joss.01277-green.svg - :target: https://doi.org/10.21105/joss.01277 - .. |DOI-code| image:: https://img.shields.io/badge/DOI-10.5281/zenodo.595120-blue.svg + .. |DOI| image:: https://img.shields.io/badge/DOI-10.5281/zenodo.595120-blue.svg :target: https://doi.org/10.5281/zenodo.595120 .. |notebook-demo| image:: https://img.shields.io/badge/launch-notebook-orange.svg?logo=jupyter :target: https://notebooks.ai/demo/gh/tqdm/tqdm
