Usage

The simplest usage of The Noterator is inside a for loop.

>>> from noterator import noterate, EMAIL
>>> for obj in noterate(my_objects, EMAIL):
...     do_something_slow(obj)
...
>>>

By default, it will notify you by your chosen methods when the iteration completes. You can also provide a description of the iteration that will be included (handy if you’re doing several).

>>> from noterator import noterate, EMAIL
>>> for obj in noterate(my_objects, EMAIL, "Slow loop 1"):
...     do_something_slow(obj)
...
>>>

You can combine notification methods and get notified when iteration begins:

>>> from noterator import noterate, EMAIL, TWILIO
>>> for obj in noterate(my_objects, EMAIL|TWILIO, start=True):
...     do_something_slow(obj)
...
>>>

If you want to hear about progress before completion, you can use the every_n parameter:

>>> from noterator import noterate, EMAIL
>>> for obj in noterate(my_objects, EMAIL, every_n=100):
...     do_something_slow(obj)
...
>>>

Advanced

If the sequence you’re iterating over is an iterator, you can also use noterate as one:

>>> from noterator import noterate, EMAIL
>>> it = noterate(iter([1,2,3]), EMAIL)
>>> while True:
...     try:
...         result = it.next()
...     except StopIteration:
...         break
...
>>>

The noterate function is just a wrapper around the noterator.Noterator class. If you want to set up a reuesable Noterator, you can also do that as follows:

>>> from noterator import Noterator, EMAIL
>>> noterator = Noterator(method=EMAIL, every_n=100, start=True)
>>> for obj in noterator(my_objects, desc="loop 1")
...     do_something_slow(obj)
...
>>> for obj in noterator(my_other_objects, desc="loop 2")
...     do_something_else_slow(obj)
...
>>>