
                         H    d dl mZ ddlmZ  G d de      Z G d de      Zy)	    )absolute_import   )DefaultMappingc                       e Zd Zd Zd Zd Zy)_DefaultSizec                      yNr    self_s     #lib/third_party/cachetools/cache.py__getitem__z_DefaultSize.__getitem__           c                     |dk(  sJ y r	   r
   )r   r   values      r   __setitem__z_DefaultSize.__setitem__   s    A::r   c                      yr	   r
   r   s     r   popz_DefaultSize.pop   r   r   N)__name__
__module____qualname__r   r   r   r
   r   r   r   r      s    r   r   c                       e Zd ZdZ e       ZddZd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zed        Zed        Zed        Zy)Cachez?Mutable mapping to serve as a simple cache or cache base class.Nc                     |r|| _         | j                   t        j                   urt               | _        t               | _        d| _        || _        y )Nr   )	getsizeofr   dict_Cache__size_Cache__data_Cache__currsize_Cache__maxsize)r   maxsizer   s      r   __init__zCache.__init__   s<     dn~~U__,Fdk&DKDODNr   c                     | j                   j                  dt        | j                  j	                               d| j
                  d| j                  dS )N(z
, maxsize=z, currsize=))	__class__r   listr    itemsr"   r!   r   s    r   __repr__zCache.__repr__    s<    T[[ !	 r   c                 b    	 | j                   |   S # t        $ r | j                  |      cY S w xY wN)r    KeyError__missing__r   keys     r   r   zCache.__getitem__(   s6    #[[ #c""#s    ..c                    | j                   }| j                  |      }||kD  rt        d      || j                  vs| j                  |   |k  r5| j
                  |z   |kD  r#| j                          | j
                  |z   |kD  r#|| j                  v r|| j                  |   z
  }n|}|| j                  |<   || j                  |<   | xj
                  |z  c_        y )Nzvalue too large)r"   r   
ValueErrorr    r   r!   popitem)r   r2   r   r#   sizediffsizes         r   r   zCache.__setitem__.   s    nnG>>% Dg~())
$++S!1D!8OOd"W, OOd"W,
dkkC((hhDKKDKKOOxOr   c                 ~    | j                   j                  |      }| j                  |= | xj                  |z  c_        y r.   )r   r   r    r!   )r   r2   r6   s      r   __delitem__zCache.__delitem__>   s.    ;;??3DCOOtOr   c                     || j                   v S r.   )r    r1   s     r   __contains__zCache.__contains__C   s    $++r   c                     t        |      r.   )r/   r1   s     r   r0   zCache.__missing__F   s    
3-r   c                 ,    t        | j                        S r.   )iterr    r+   s    r   __iter__zCache.__iter__I   s    r   c                 ,    t        | j                        S r.   )lenr    r+   s    r   __len__zCache.__len__L   s    t{{r   c                     | j                   S )zThe maximum size of the cache.)r"   r+   s    r   r#   zCache.maxsizeO   s     >>r   c                     | j                   S )zThe current size of the cache.)r!   r+   s    r   currsizezCache.currsizeT   s     ??r   c                      y)z+Return the size of a cache element's value.r   r
   )r   s    r   r   zCache.getsizeofY   s     r   r.   )r   r   r   __doc__r   r   r$   r,   r   r   r9   r;   r0   r?   rB   propertyr#   rE   staticmethodr   r
   r   r   r   r      su    G>&#  
      r   r   N)
__future__r   abcr   objectr   r   r
   r   r   <module>rM      s%    & 	6 	JN Jr   