ó
a#nSc           @   sf   d  d l  Z  d e f d „  ƒ  YZ d „  Z e d k rb d  d l  Z  e ƒ  \ Z Z e  j e ƒ n  d S(   iÿÿÿÿNt   VLibNodec           B   s†   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d d „ Z d d „ Z d „  Z	 d d	 „ Z
 d d
 „ Z d „  Z d d d d „ Z RS(   sS    base class for all virtual library nodes,
  defines minimal required interface

  c         O   s   g  |  _  g  |  _ d  S(   N(   t	   _childrent   _parents(   t   selft   argst   kwargs(    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/VLib/Node.pyt   __init__   s    	c         C   s   |  j  ƒ  |  S(   s     part of the iterator interface (   t   reset(   R   (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/VLib/Node.pyt   __iter__   s    
c         C   s   d S(   sK    part of the iterator interface

      raises StopIteration on failure
    N(    (   R   (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/VLib/Node.pyt   next   s    c         C   s%   x |  j  ƒ  D] } | j ƒ  q Wd S(   s!    resets our iteration state

    N(   t
   GetParentsR   (   R   t   parent(    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/VLib/Node.pyR      s    i   c         C   s0   |  j  j | ƒ | r, | j |  d d ƒn  d S(   s  

    >>> p1 = VLibNode()
    >>> p2 = VLibNode()
    >>> c1 = VLibNode()
    >>> p1.AddChild(c1)
    >>> len(c1.GetParents())
    1
    >>> len(p1.GetChildren())
    1
    >>> p2.AddChild(c1,notify=0)
    >>> len(c1.GetParents())
    1
    >>> len(p2.GetChildren())
    1
    >>> c1.AddParent(p2,notify=0)
    >>> len(c1.GetParents())
    2
    >>> len(p2.GetChildren())
    1

    t   notifyi    N(   R   t   appendt	   AddParent(   R   t   childR   (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/VLib/Node.pyt   AddChild-   s    c         C   s0   |  j  j | ƒ | r, | j |  d d ƒn  d S(   sö   
    >>> p1 = VLibNode()
    >>> c1 = VLibNode()
    >>> p1.AddChild(c1)
    >>> len(c1.GetParents())
    1
    >>> len(p1.GetChildren())
    1
    >>> p1.RemoveChild(c1)
    >>> len(c1.GetParents())
    0
    >>> len(p1.GetChildren())
    0
    R   i    N(   R   t   removet   RemoveParent(   R   R   R   (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/VLib/Node.pyt   RemoveChildG   s    c         C   s   t  |  j ƒ S(   N(   t   tupleR   (   R   (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/VLib/Node.pyt   GetChildrenY   s    c         C   s0   |  j  j | ƒ | r, | j |  d d ƒn  d S(   s~  
    >>> p1 = VLibNode()
    >>> p2 = VLibNode()
    >>> c1 = VLibNode()
    >>> c1.AddParent(p1)
    >>> len(c1.GetParents())
    1
    >>> len(p1.GetChildren())
    1
    >>> c1.AddParent(p2,notify=0)
    >>> len(c1.GetParents())
    2
    >>> len(p2.GetChildren())
    0
    >>> p2.AddChild(c1,notify=0)
    >>> len(c1.GetParents())
    2
    >>> len(p2.GetChildren())
    1
    R   i    N(   R   R   R   (   R   R   R   (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/VLib/Node.pyR   \   s    c         C   s0   |  j  j | ƒ | r, | j |  d d ƒn  d S(   s÷   
    >>> p1 = VLibNode()
    >>> c1 = VLibNode()
    >>> p1.AddChild(c1)
    >>> len(c1.GetParents())
    1
    >>> len(p1.GetChildren())
    1
    >>> c1.RemoveParent(p1)
    >>> len(c1.GetParents())
    0
    >>> len(p1.GetChildren())
    0
    R   i    N(   R   R   R   (   R   R   R   (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/VLib/Node.pyR   t   s    c         C   s   t  |  j ƒ S(   N(   R   R   (   R   (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/VLib/Node.pyR
   †   s    i    c         C   sÙ   t  |  d ƒ r d Sd |  _ | rÃ xL |  j ƒ  D]> } | j |  d d ƒ| r/ | j d d d d d | ƒ q/ q/ WxO |  j ƒ  D]> } | j |  d d ƒ| r~ | j d d d | d d ƒ q~ q~ Wn  g  |  _ g  |  _ d S(   sÌ  
    >>> p1 = VLibNode()
    >>> p2 = VLibNode()
    >>> c1 = VLibNode()
    >>> c2 = VLibNode()
    >>> p1.AddChild(c1)
    >>> p2.AddChild(c1)
    >>> p2.AddChild(c2)
    >>> len(c1.GetParents())
    2
    >>> len(c2.GetParents())
    1
    >>> len(p1.GetChildren())
    1
    >>> len(p2.GetChildren())
    2
    >>> c1.Destroy(propagateUp=1)
    >>> len(p2.GetChildren())
    0
    >>> len(c1.GetParents())
    0
    >>> len(c2.GetParents())
    0
    
    t
   _destroyedNi   R   i    t   propagateDownt   propagateUp(	   t   hasattrR   R   R   t   DestroyR
   R   R   R   (   R   R   R   R   t   o(    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/VLib/Node.pyR   ‰   s     	#&	(   t   __name__t
   __module__t   __doc__R   R   R	   R   R   R   R   R   R   R
   R   (    (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/VLib/Node.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!   (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/VLib/Node.pyt   _test»   s    R   (   R!   t   objectR    R$   R   t   failedt   triedt   exit(    (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/VLib/Node.pyt   <module>   s   ³	