ó
a#nSc           @   sW   d  d d     YZ  d   Z e d k rS d d l Z e   \ Z Z e j e  n  d S(   t   LazySigc           B   s#   e  Z d    Z d   Z d   Z RS(   c         C   s7   | d k r t  d  n  | |  _ | |  _ i  |  _ d S(   sW   
    computeFunc should take a single argument, the integer bit id
    to compute

    i    s	   zero sizeN(   t
   ValueErrort   computeFunct   sizet   _cache(   t   selfR   t   sigSize(    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/DataStructs/LazySignature.pyt   __init__	   s
    		c         C   s   |  j  S(   sG   

     >>> obj = LazySig(lambda x:1,10)
     >>> len(obj)
     10

    (   R   (   R   (    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/DataStructs/LazySignature.pyt   __len__   s    c         C   s   | d k  r |  j  | } n  | d k s7 | |  j  k rC t d  n  |  j j |  re |  j | } n |  j |  } | |  j | <| S(   s<  

     >>> obj = LazySig(lambda x:x,10)
     >>> obj[1]
     1
     >>> obj[-1]
     9
     >>> try:
     ...   obj[10]
     ... except IndexError:
     ...   1
     ... else:
     ...   0
     1
     >>> try:
     ...   obj[-10]
     ... except IndexError:
     ...   1
     ... else:
     ...   0
     1
     
    i    s	   bad index(   R   t
   IndexErrorR   t   has_keyR   (   R   t   whicht   v(    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/DataStructs/LazySignature.pyt   __getitem__   s    (   t   __name__t
   __module__R   R   R   (    (    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/DataStructs/LazySignature.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   (    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/DataStructs/LazySignature.pyt   _testI   s    R   i˙˙˙˙N(    (   R    R   R   R   t   failedt   triedt   exit(    (    (    sa   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/DataStructs/LazySignature.pyt   <module>   s
   A	