3 M(ÌYB ã@s<ddlmZddlmZGdd„deƒZGdd„deƒZdS) é)Úabsolute_importé)ÚDefaultMappingc@s$eZdZdd„Zdd„Zdd„ZdS)Ú _DefaultSizecCsdS)Nr©)ÚselfÚ_rrú>/private/tmp/pip-build-nl73fm5q/cachetools/cachetools/cache.pyÚ __getitem__sz_DefaultSize.__getitem__cCs|dks t‚dS)Nr)ÚAssertionError)rrÚvaluerrr Ú __setitem__ sz_DefaultSize.__setitem__cCsdS)Nrr)rrrrr Úpop sz_DefaultSize.popN)Ú__name__Ú __module__Ú __qualname__r r rrrrr rsrc@s˜eZdZdZeƒZddd„Zdd„Zdd„Zd d „Z d d „Z d d„Z dd„Z dd„Z dd„Zedd„ƒZedd„ƒZedd„ƒZedd„ƒZdd„ZdS) ÚCachez?Mutable mapping to serve as a simple cache or cache base class.NcCs4|r ||_|r||_tƒ|_tƒ|_d|_||_dS)Nr)Ú_Cache__missingÚ_Cache__getsizeofÚdictÚ _Cache__sizeÚ _Cache__dataÚ_Cache__currsizeÚ_Cache__maxsize)rÚmaxsizeÚmissingÚ getsizeofrrr Ú__init__szCache.__init__cCs"d|jjt|jjƒƒ|j|jfS)Nz%s(%r, maxsize=%r, currsize=%r))Ú __class__rÚlistrÚitemsrr)rrrr Ú__repr__ s  zCache.__repr__c Cs*y |j|Stk r$|j|ƒSXdS)N)rÚKeyErrorÚ __missing__)rÚkeyrrr r (s zCache.__getitem__cCs˜|j}|j|ƒ}||kr tdƒ‚||jks8|j||krTx|j||krR|jƒq:W||jkrn||j|}n|}||j|<||j|<|j|7_dS)Nzvalue too large)rrÚ ValueErrorrrrÚpopitem)rr$r rÚsizeZdiffsizerrr r .s     zCache.__setitem__cCs&|jj|ƒ}|j|=|j|8_dS)N)rrrr)rr$r'rrr Ú __delitem__>s zCache.__delitem__cCs ||jkS)N)r)rr$rrr Ú __contains__CszCache.__contains__c Cs4|j|ƒ}y|j||ƒWntk r.YnX|S)N)rr r%)rr$r rrr r#Fs  zCache.__missing__cCs t|jƒS)N)Úiterr)rrrr Ú__iter__NszCache.__iter__cCs t|jƒS)N)Úlenr)rrrr Ú__len__Qsz Cache.__len__cCsdS)Nrr)r rrr Z __getsizeofTszCache.__getsizeofcCs t|ƒ‚dS)N)r")r$rrr Z __missingXszCache.__missingcCs|jS)zThe maximum size of the cache.)r)rrrr r\sz Cache.maxsizecCs|jS)zThe current size of the cache.)r)rrrr ÚcurrsizeaszCache.currsizecCs |j|ƒS)z+Return the size of a cache element's value.)r)rr rrr rfszCache.getsizeof)NN)rrrÚ__doc__rrrr!r r r(r)r#r+r-Ú staticmethodrrÚpropertyrr.rrrrr rs      rN)Ú __future__rÚabcrÚobjectrrrrrr Ús