B
    3Rc/                 @   s@   d dl mZ G dd deZeje_dddZedkr<e  dS )	    )VLibNodec               @   s4   e Zd ZdZdddZdd Zdd Zdd
dZdS )
SupplyNodea   base class for nodes which supply things

    Assumptions:
      1) no parents

    Usage Example:
    
      >>> supplier = SupplyNode(contents=[1,2,3])
      >>> supplier.next()
      1
      >>> supplier.next()
      2
      >>> supplier.next()
      3
      >>> supplier.next()
      Traceback (most recent call last):
          ...
      StopIteration
      >>> supplier.reset()
      >>> supplier.next()
      1
      >>> [x for x in supplier]
      [1, 2, 3]


    Nc             K   s.   t j| f| |d k	r|| _ng | _d| _d S )Nr   )r   __init__	_contents_pos)selfcontentskwargs r
   0lib/python3.7/site-packages/rdkit/VLib/Supply.pyr   %   s
    zSupplyNode.__init__c             C   s   t |  d| _d S )Nr   )r   resetr   )r   r
   r
   r   r   -   s    
zSupplyNode.resetc             C   s2   | j t| jkrt| j| j  }|  j d7  _ |S )N   )r   lenr   StopIteration)r   Zresr
   r
   r   next1   s
    zSupplyNode.nextr   c             C   s   t dd S )NzSupplyNodes do not have parents)
ValueError)r   parentZnotifyr
   r
   r   	AddParent9   s    zSupplyNode.AddParent)N)r   )__name__
__module____qualname____doc__r   r   r   r   r
   r
   r
   r   r   	   s
   
r   Nc             C   s2   dd l }dd l}|j|j| d\}}|| d S )Nr   )Zoptionflagsverbose)sysdoctestZtestmodELLIPSISexit)r   r   r   Zfailed_r
   r
   r   _runDoctestsD   s    r   __main__)N)Zrdkit.VLib.Noder   r   r   __next__r   r   r
   r
   r
   r   <module>   s
   4
