File: //opt/alt/python27/lib/python2.7/site-packages/future/builtins/newnext.pyc
�
�A�[c           @   s.   d  Z  e Z e �  Z e d � Z d g Z d S(   s�  
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.
c         C   s�   yc y |  j  �  SWnN t k
 ra y |  j �  SWqb t k
 r] t d j |  j j � � � qb Xn XWn, t k
 r� } | t k r� | � q� | Sn Xd S(   s�   
    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.
    s   '{0}' object is not an iteratorN(	   t   __next__t   AttributeErrort   nextt	   TypeErrort   formatt	   __class__t   __name__t
   StopIterationt	   _SENTINEL(   t   iteratort   defaultt   e(    (    sH   /opt/alt/python27/lib/python2.7/site-packages/future/builtins/newnext.pyt   newnext+   s    
		R   N(   t   __doc__R   t
   _builtin_nextt   objectR   R   t   __all__(    (    (    sH   /opt/alt/python27/lib/python2.7/site-packages/future/builtins/newnext.pyt   <module>%   s