You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					93 lines
				
				2.5 KiB
			
		
		
			
		
	
	
					93 lines
				
				2.5 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								"""
							 | 
						||
| 
								 | 
							
								Thin wrappers around common functions.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Subpackages contain potentially unstable extensions.
							 | 
						||
| 
								 | 
							
								"""
							 | 
						||
| 
								 | 
							
								from warnings import warn
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								from ..auto import tqdm as tqdm_auto
							 | 
						||
| 
								 | 
							
								from ..std import TqdmDeprecationWarning, tqdm
							 | 
						||
| 
								 | 
							
								from ..utils import ObjectWrapper
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								__author__ = {"github.com/": ["casperdcl"]}
							 | 
						||
| 
								 | 
							
								__all__ = ['tenumerate', 'tzip', 'tmap']
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class DummyTqdmFile(ObjectWrapper):
							 | 
						||
| 
								 | 
							
								    """Dummy file-like that will write to tqdm"""
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def __init__(self, wrapped):
							 | 
						||
| 
								 | 
							
								        super(DummyTqdmFile, self).__init__(wrapped)
							 | 
						||
| 
								 | 
							
								        self._buf = []
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def write(self, x, nolock=False):
							 | 
						||
| 
								 | 
							
								        nl = b"\n" if isinstance(x, bytes) else "\n"
							 | 
						||
| 
								 | 
							
								        pre, sep, post = x.rpartition(nl)
							 | 
						||
| 
								 | 
							
								        if sep:
							 | 
						||
| 
								 | 
							
								            blank = type(nl)()
							 | 
						||
| 
								 | 
							
								            tqdm.write(blank.join(self._buf + [pre, sep]),
							 | 
						||
| 
								 | 
							
								                       end=blank, file=self._wrapped, nolock=nolock)
							 | 
						||
| 
								 | 
							
								            self._buf = [post]
							 | 
						||
| 
								 | 
							
								        else:
							 | 
						||
| 
								 | 
							
								            self._buf.append(x)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def __del__(self):
							 | 
						||
| 
								 | 
							
								        if self._buf:
							 | 
						||
| 
								 | 
							
								            blank = type(self._buf[0])()
							 | 
						||
| 
								 | 
							
								            try:
							 | 
						||
| 
								 | 
							
								                tqdm.write(blank.join(self._buf), end=blank, file=self._wrapped)
							 | 
						||
| 
								 | 
							
								            except (OSError, ValueError):
							 | 
						||
| 
								 | 
							
								                pass
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def builtin_iterable(func):
							 | 
						||
| 
								 | 
							
								    """Returns `func`"""
							 | 
						||
| 
								 | 
							
								    warn("This function has no effect, and will be removed in tqdm==5.0.0",
							 | 
						||
| 
								 | 
							
								         TqdmDeprecationWarning, stacklevel=2)
							 | 
						||
| 
								 | 
							
								    return func
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def tenumerate(iterable, start=0, total=None, tqdm_class=tqdm_auto, **tqdm_kwargs):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Equivalent of `numpy.ndenumerate` or builtin `enumerate`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    Parameters
							 | 
						||
| 
								 | 
							
								    ----------
							 | 
						||
| 
								 | 
							
								    tqdm_class  : [default: tqdm.auto.tqdm].
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    try:
							 | 
						||
| 
								 | 
							
								        import numpy as np
							 | 
						||
| 
								 | 
							
								    except ImportError:
							 | 
						||
| 
								 | 
							
								        pass
							 | 
						||
| 
								 | 
							
								    else:
							 | 
						||
| 
								 | 
							
								        if isinstance(iterable, np.ndarray):
							 | 
						||
| 
								 | 
							
								            return tqdm_class(np.ndenumerate(iterable), total=total or iterable.size,
							 | 
						||
| 
								 | 
							
								                              **tqdm_kwargs)
							 | 
						||
| 
								 | 
							
								    return enumerate(tqdm_class(iterable, total=total, **tqdm_kwargs), start)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def tzip(iter1, *iter2plus, **tqdm_kwargs):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Equivalent of builtin `zip`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    Parameters
							 | 
						||
| 
								 | 
							
								    ----------
							 | 
						||
| 
								 | 
							
								    tqdm_class  : [default: tqdm.auto.tqdm].
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    kwargs = tqdm_kwargs.copy()
							 | 
						||
| 
								 | 
							
								    tqdm_class = kwargs.pop("tqdm_class", tqdm_auto)
							 | 
						||
| 
								 | 
							
								    for i in zip(tqdm_class(iter1, **kwargs), *iter2plus):
							 | 
						||
| 
								 | 
							
								        yield i
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								def tmap(function, *sequences, **tqdm_kwargs):
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    Equivalent of builtin `map`.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    Parameters
							 | 
						||
| 
								 | 
							
								    ----------
							 | 
						||
| 
								 | 
							
								    tqdm_class  : [default: tqdm.auto.tqdm].
							 | 
						||
| 
								 | 
							
								    """
							 | 
						||
| 
								 | 
							
								    for i in tzip(*sequences, **tqdm_kwargs):
							 | 
						||
| 
								 | 
							
								        yield function(*i)
							 |