
    q`F                     :    d dl mZ  G d d      Z G d de      Zy)    )MutableMappingc                   "    e Zd ZdZd Zd Zd Zy)_DefaultSize c                      yN   r   self_s     0lib/python3.12/site-packages/cachetools/cache.py__getitem__z_DefaultSize.__getitem__           c                     |dk(  sJ y r   r   )r   r   values      r   __setitem__z_DefaultSize.__setitem__   s    zzr   c                      yr   r   r
   s     r   popz_DefaultSize.pop   r   r   N)__name__
__module____qualname__	__slots__r   r   r   r   r   r   r   r      s    Ir   r   c                       e Zd ZdZ e       Z e       ZddZd Z	d Z
d Zd Zd Zd	 Zd
 Zd ZddZefdZd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>>0&DKf r   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<    NN##""$%NNOO	
 	
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    	);;s## 	)##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__0   s    ..~~e$'>.//dkk!T[[%5%<//D(72 //D(72$++dkk#..HH CC8#r   c                 ~    | j                   j                  |      }| j                  |= | xj                  |z  c_        y r.   )r   r   r    r!   )r   r2   r6   s      r   __delitem__zCache.__delitem__@   s.    {{s#KK4r   c                     || j                   v S r.   )r    r1   s     r   __contains__zCache.__contains__E   s    dkk!!r   c                     t        |      r.   )r/   r1   s     r   r0   zCache.__missing__H   s    smr   c                 ,    t        | j                        S r.   )iterr    r+   s    r   __iter__zCache.__iter__K   s    DKK  r   c                 ,    t        | j                        S r.   )lenr    r+   s    r   __len__zCache.__len__N   s    4;;r   c                     || v r| |   S |S r.   r   )r   r2   defaults      r   getz	Cache.getQ   s    $;9Nr   c                 X    || v r
| |   }| |= |S || j                   u rt        |      |}|S r.   )_Cache__markerr/   r   r2   rD   r   s       r   r   z	Cache.popW   sB    $;IES	
 	 %3-Er   c                 *    || v r| |   }|S |x| |<   }|S r.   r   rH   s       r   
setdefaultzCache.setdefaulta   s.    $;IE  !('DIr   c                     | j                   S )zThe maximum size of the cache.)r"   r+   s    r   r#   zCache.maxsizeh   s     ~~r   c                     | j                   S )zThe current size of the cache.)r!   r+   s    r   currsizezCache.currsizem   s     r   c                      y)z+Return the size of a cache element's value.r	   r   )r   s    r   r   zCache.getsizeofr   s     r   r.   )r   r   r   __doc__objectrG   r   r   r$   r,   r   r   r9   r;   r0   r?   rB   rE   r   rJ   propertyr#   rM   staticmethodr   r   r   r   r   r      s    IxH^F!
)$  
"!   (       r   r   N)collections.abcr   r   r   r   r   r   <module>rT      s     * cN cr   