U
    ɀ^                     @   sF   d dl mZ G dd deZzd dlmZ W n   eZY nX eZdS )    )OrderedDictc                       sn   e Zd ZdZd fdd	Z fddZ fddZ fd	d
Z fddZ fddZ	dd Z
dd Z  ZS )LRUDictManualu   一个手动实现的LRUDict    c                    s   t    || _d S N)super__init__maxsizeselfsize	__class__ $/var/www/zmirror/zmirror/lru_dict.pyr      s    
zLRUDictManual.__init__c                    s,   t  |}z| | W n   Y nX |S r   )r   __getitem__move_to_endr
   keyvaluer   r   r   r      s    zLRUDictManual.__getitem__c                    s:   t | | jkr| jdd || kr(| |= t || d S )NF)last)lenr   popitemr   __setitem__r   r   r   r   r      s
    zLRUDictManual.__setitem__c                    s   t tt t  S r   )listreversedr   keysr
   r   r   r   r      s    zLRUDictManual.keysc                    s   t tt t  S r   )r   r   r   valuesr   r   r   r   r       s    zLRUDictManual.valuesc                    s   t tt t  S r   )r   r   r   itemsr   r   r   r   r   #   s    zLRUDictManual.itemsc                 C   s   t | S r   )r   r   r   r   r   get_size&   s    zLRUDictManual.get_sizec                 C   s
   || _ d S r   )r   r	   r   r   r   set_size)   s    zLRUDictManual.set_size)r   )__name__
__module____qualname____doc__r   r   r   r   r   r   r   r    __classcell__r   r   r   r   r      s   	r   )LRUN)collectionsr   r   Zlrur&   LRUDictr   r   r   r   <module>   s   (
