diff env/lib/python3.7/site-packages/future/builtins/newnext.py @ 5:9b1c78e6ba9c draft default tip

"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
author shellac
date Mon, 01 Jun 2020 08:59:25 -0400
parents 79f47841a781
children
line wrap: on
line diff
--- a/env/lib/python3.7/site-packages/future/builtins/newnext.py	Thu May 14 16:47:39 2020 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-'''
-This module provides a newnext() function in Python 2 that mimics the
-behaviour of ``next()`` in Python 3, falling back to Python 2's behaviour for
-compatibility if this fails.
-
-``newnext(iterator)`` calls the iterator's ``__next__()`` method if it exists. If this
-doesn't exist, it falls back to calling a ``next()`` method.
-
-For example:
-
-    >>> class Odds(object):
-    ...     def __init__(self, start=1):
-    ...         self.value = start - 2
-    ...     def __next__(self):                 # note the Py3 interface
-    ...         self.value += 2
-    ...         return self.value
-    ...     def __iter__(self):
-    ...         return self
-    ...
-    >>> iterator = Odds()
-    >>> next(iterator)
-    1
-    >>> next(iterator)
-    3
-
-If you are defining your own custom iterator class as above, it is preferable
-to explicitly decorate the class with the @implements_iterator decorator from
-``future.utils`` as follows:
-
-    >>> @implements_iterator
-    ... class Odds(object):
-    ...     # etc
-    ...     pass
-
-This next() function is primarily for consuming iterators defined in Python 3
-code elsewhere that we would like to run on Python 2 or 3.
-'''
-
-_builtin_next = next
-
-_SENTINEL = object()
-
-def newnext(iterator, default=_SENTINEL):
-    """
-    next(iterator[, default])
-
-    Return the next item from the iterator. If default is given and the iterator
-    is exhausted, it is returned instead of raising StopIteration.
-    """
-
-    # args = []
-    # if default is not _SENTINEL:
-    #     args.append(default)
-    try:
-        try:
-            return iterator.__next__()
-        except AttributeError:
-            try:
-                return iterator.next()
-            except AttributeError:
-                raise TypeError("'{0}' object is not an iterator".format(
-                                           iterator.__class__.__name__))
-    except StopIteration as e:
-        if default is _SENTINEL:
-            raise e
-        else:
-            return default
-
-
-__all__ = ['newnext']