B
    3Rc                 @   s*   G d d dZ dddZedkr&e  dS )c               @   s$   e Zd Zdd Zdd Zdd ZdS )LazySigc             C   s&   |dkrt d|| _|| _i | _dS )zW
    computeFunc should take a single argument, the integer bit id
    to compute

        z	zero sizeN)
ValueErrorcomputeFuncsize_cache)selfr   ZsigSize r   >lib/python3.7/site-packages/rdkit/DataStructs/LazySignature.py__init__
   s
    zLazySig.__init__c             C   s   | j S )zG

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

    )r   )r   r   r   r	   __len__   s    zLazySig.__len__c             C   sZ   |dk r| j | }|dks$|| j kr,td|| jkrB| j| }n| |}|| j|< |S )a7  

     >>> 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

    r   z	bad index)r   
IndexErrorr   r   )r   Zwhichvr   r   r	   __getitem__    s    



zLazySig.__getitem__N)__name__
__module____qualname__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	   _runDoctestsK   s    r   __main__)N)r   r   r   r   r   r   r	   <module>   s   C
