Make the iter_except() recipe more compact. (gh-116132)

Only one example is needed
This commit is contained in:
Raymond Hettinger 2024-02-29 11:30:18 -06:00 committed by GitHub
parent f0df35eeca
commit a81d9509ee
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 1 additions and 20 deletions

View File

@ -983,28 +983,10 @@ which incur interpreter overhead.
""" Call a function repeatedly until an exception is raised.
Converts a call-until-exception interface to an iterator interface.
Like builtins.iter(func, sentinel) but uses an exception instead
of a sentinel to end the loop.
Priority queue iterator:
iter_except(functools.partial(heappop, h), IndexError)
Non-blocking dictionary iterator:
iter_except(d.popitem, KeyError)
Non-blocking deque iterator:
iter_except(d.popleft, IndexError)
Non-blocking iterator over a producer Queue:
iter_except(q.get_nowait, Queue.Empty)
Non-blocking set iterator:
iter_except(s.pop, KeyError)
"""
# iter_except(d.popitem, KeyError) --> non-blocking dictionary iterator
try:
if first is not None:
# For database APIs needing an initial call to db.first()
yield first()
while True:
yield func()
@ -1012,7 +994,6 @@ which incur interpreter overhead.
pass
The following recipes have a more mathematical flavor:
.. testcode::