mirror of https://github.com/tqdm/tqdm.git
add `__reversed__()`
This commit is contained in:
parent
983b66c132
commit
4c7ad3a65a
|
@ -1975,6 +1975,16 @@ def test_closed():
|
|||
our_file.close()
|
||||
|
||||
|
||||
def test_reversed(capsys):
|
||||
"""Test reversed()"""
|
||||
for _ in reversed(tqdm(_range(9))):
|
||||
pass
|
||||
out, err = capsys.readouterr()
|
||||
assert not out
|
||||
assert ' 0%' in err
|
||||
assert '100%' in err
|
||||
|
||||
|
||||
def test_contains(capsys):
|
||||
"""Test __contains__ doesn't iterate"""
|
||||
with tqdm(_range(9)) as t:
|
||||
|
|
11
tqdm/std.py
11
tqdm/std.py
|
@ -1131,6 +1131,17 @@ class tqdm(Comparable):
|
|||
else self.iterable.__length_hint__() if hasattr(self.iterable, "__length_hint__")
|
||||
else getattr(self, "total", None))
|
||||
|
||||
def __reversed__(self):
|
||||
try:
|
||||
orig = self.iterable
|
||||
except AttributeError:
|
||||
raise TypeError("'tqdm' object is not reversible")
|
||||
else:
|
||||
self.iterable = reversed(self.iterable)
|
||||
return self.__iter__()
|
||||
finally:
|
||||
self.iterable = orig
|
||||
|
||||
def __contains__(self, item):
|
||||
contains = getattr(self.iterable, '__contains__', None)
|
||||
return contains(item) if contains is not None else item in self.__iter__()
|
||||
|
|
Loading…
Reference in New Issue