ó
a#nSc           @   sv   d  d l  Z  d  d l m Z d e f d     YZ d   Z e d k rr d  d l  Z  e   \ Z Z e  j e  n  d S(   i˙˙˙˙N(   t   VLibNodet
   OutputNodec           B   s&   e  Z d  Z d d d  Z d   Z RS(   sx   base class for nodes which dump output

  Assumptions:

    - destination supports a write() method

    - strFunc, if provided, returns a string representation of
      the input

    - inputs (parents) can be stepped through in lockstep


  Usage Example:
    >>> from rdkit.VLib.Supply import SupplyNode
    >>> supplier = SupplyNode(contents=[1,2,3])
    >>> import StringIO
    >>> io = StringIO.StringIO()
    >>> node = OutputNode(dest=io,strFunc=lambda x:'%s '%(str(x)))
    >>> node.AddParent(supplier)
    >>> node.next()
    1
    >>> io.getvalue()
    '1 '
    >>> node.next()
    2
    >>> io.getvalue()
    '1 2 '

  c         K   s&   t  j |  |  | |  _ | |  _ d  S(   N(   R    t   __init__t   _destt   _func(   t   selft   destt   strFunct   kwargs(    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/VLib/Output.pyR   (   s    	c         C   sĚ   |  j    } g  } x? | D]7 } y | j | j    Wq t k
 rO t  q Xq Wt |  d k ru t |  } n
 | d } |  j d  k	 r  |  j |  } n t |  } |  j	 rČ |  j	 j
 |  n  | S(   Ni   i    (   t
   GetParentst   appendt   nextt   StopIterationt   lent   tupleR   t   Nonet   strR   t   write(   R   t   parentst   argst   parentt   outp(    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/VLib/Output.pyR   ,   s     
	N(   t   __name__t
   __module__t   __doc__R   R   R   (    (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/VLib/Output.pyR   
   s   c          C   s,   d d  l  }  d d  l } |  j | j d  S(   Ni˙˙˙˙t   __main__(   t   doctestt   syst   testmodt   modules(   R   R   (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/VLib/Output.pyt   _testD   s    R   (	   R   t   rdkit.VLib.NodeR    R   R   R   t   failedt   triedt   exit(    (    (    sS   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/VLib/Output.pyt   <module>   s   :	