o šQa¥ã@sTddlmZzddlZWn eyddlZYnwddlmZGdd„deƒZdS)é)Úabsolute_importNé)Ú deunicodisec@sLeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dS)Ú HashCachecCs tƒ|_dS)N)ÚdictÚinodes)Úself©r ú./usr/lib/python3/dist-packages/S3/HashCache.pyÚ__init__ s zHashCache.__init__cCsf|dks|dkr dS||jvrtƒ|j|<||j|vr$tƒ|j||<t||d|j|||<dS)Nr)Úmd5Úsize)rr)rÚdevÚinodeÚmtimer r r r r Úadds   z HashCache.addcCsDz|j|||}|d|krWdSW|dSty!YdSw)Nr r )rÚ Exception©rrrrr Údr r r r s ÿ þÿz HashCache.md5cCsVt|jƒD]#}t|j|ƒD]}t|j||ƒD] }d|j|||d<qqqdS)NTÚpurge©Útupler)rrÚiÚcr r r Úmark_all_for_purge!sÿÿÿzHashCache.mark_all_for_purgecCs`z |j|||}Wn tyYdSw|d|kr,d|vr.|j|||d=dSdSdS)Nr r)rÚKeyErrorrr r r Úunmark_for_purge's ÿÿzHashCache.unmark_for_purgecCsft|jƒD]+}t|j|ƒD]!}t|j||ƒD]}d|j|||vr.|j||=nqqqdS)Nrr)rrrÚmr r r r/s þ€þÿzHashCache.purgecCsNt|jdd}tt|ƒdƒ}t ||¡WdƒdS1s wYdS)Nr)rÚversionÚwb)rrÚopenrÚpickleÚdump)rÚfrÚfpr r r Úsave7s"ÿzHashCache.savecCsdtt|ƒdƒ }t |¡}Wdƒn1swY| d¡dkr.d|vr0|d|_dSdSdS)NÚrbrrr)r rr!ÚloadÚgetr)rr#r$rr r r r'<s  ÿÿzHashCache.loadN) Ú__name__Ú __module__Ú __qualname__r rr rrrr%r'r r r r r s  r) Ú __future__rÚcPickler!Ú ImportErrorÚUtilsrÚobjectrr r r r Ús    ÿ