U
    «#vhü  ã                   @   s<   d dl mZmZ ddgZG dd„ deƒZG dd„ deƒZdS )é    )ÚUserDictÚUserListÚLazyDictÚLazyListc                       s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )r   c                    s   t ƒ  ¡  || _d S ©N)ÚsuperÚ__init__Údata)Úselfr	   ©Ú	__class__© ú</tmp/pip-unpacked-wheel-1ufboor8/fontTools/misc/lazyTools.pyr      s    
zLazyDict.__init__c                 C   s(   | j | }t|ƒr$||ƒ}|| j |< |S r   )r	   Úcallable)r
   ÚkÚvr   r   r   Ú__getitem__   s
    

zLazyDict.__getitem__)Ú__name__Ú
__module__Ú__qualname__r   r   Ú__classcell__r   r   r   r   r      s   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )r   c                    sV   t |tƒr.t| tˆ ƒ¡Ž }‡ fdd„|D ƒS ˆ j| }t|ƒrR||ƒ}|ˆ j|< |S )Nc                    s   g | ]}ˆ | ‘qS r   r   )Ú.0Úi©r
   r   r   Ú
<listcomp>   s     z(LazyList.__getitem__.<locals>.<listcomp>)Ú
isinstanceÚsliceÚrangeÚindicesÚlenr	   r   )r
   r   r   r   r   r   r   r      s    


zLazyList.__getitem__c                 C   s0   t |tƒrt|ƒ}nt |tƒr ntS t| ƒ| S r   )r   r   ÚlistÚNotImplemented©r
   Úotherr   r   r   Ú__add__   s    


zLazyList.__add__c                 C   s   t |tƒstS |t| ƒ S r   )r   r    r!   r"   r   r   r   Ú__radd__'   s    
zLazyList.__radd__N)r   r   r   r   r$   r%   r   r   r   r   r      s   
	N)Úcollectionsr   r   Ú__all__r   r   r   r   r   r   Ú<module>   s   