3 �Pf�' � @ s� d dl mZ d dlmZmZ yd dlmZ W n" ek rN G dd� d�ZY nX yd dlmZ W n ek r� ddl mZ Y nX ddl mZmZm Z d d gZe� ZG dd � d e�ZG dd � d e�Zd S )� )�absolute_import)�Mapping�MutableMapping)�RLockc @ s e Zd Zdd� Zdd� ZdS )r c C s d S )N� )�selfr r �"/usr/lib/python3.6/_collections.py� __enter__ s zRLock.__enter__c C s d S )Nr )r �exc_type� exc_value� tracebackr r r �__exit__ s zRLock.__exit__N)�__name__� __module__�__qualname__r r r r r r r s r )�OrderedDict� )�iterkeys� itervalues�PY3�RecentlyUsedContainer�HTTPHeaderDictc @ sV e Zd ZdZeZddd�Zdd� Zdd � Zd d� Z dd � Z dd� Zdd� Zdd� Z dS )r a� Provides a thread-safe dict-like container which maintains up to ``maxsize`` keys while throwing away the least-recently-used keys beyond ``maxsize``. :param maxsize: Maximum number of recent elements to retain. :param dispose_func: Every time an item is evicted from the container, ``dispose_func(value)`` is called. Callback which will get called � Nc C s" || _ || _| j� | _t� | _d S )N)�_maxsize�dispose_func�ContainerCls� _containerr �lock)r �maxsizer r r r �__init__+ s zRecentlyUsedContainer.__init__c C s, | j � | jj|�}|| j|<