
bc           @@  sj   d  d l  m Z y d  d l Z Wn e k
 r? d  d l Z n Xd d l m Z d e f d     YZ d S(   i    (   t   absolute_importNi   (   t   deunicodiset	   HashCachec           B@  sP   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 RS(   c         C@  s   t    |  _ d  S(   N(   t   dictt   inodes(   t   self(    (    sL   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/HashCache.pyt   __init__   s    c         C@  s   | d k s | d k r d  S| |  j  k r> t   |  j  | <n  | |  j  | k rh t   |  j  | | <n  t d | d |  |  j  | | | <d  S(   Ni    t   md5t   size(   R   R   (   R   t   devt   inodet   mtimeR   R   (    (    sL   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/HashCache.pyt   add   s     c         C@  sJ   y- |  j  | | | } | d | k r, d  SWn t k
 rA d  SX| d S(   NR   R   (   R   t   Nonet	   Exception(   R   R	   R
   R   R   t   d(    (    sL   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/HashCache.pyR      s    c         C@  sw   xp t  |  j  D]_ } xV t  |  j |  D]A } x8 t  |  j | |  D] } t |  j | | | d <qH Wq* Wq Wd  S(   Nt   purge(   t   tupleR   t   True(   R   R   t   it   c(    (    sL   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/HashCache.pyt   mark_all_for_purge!   s    c         C@  sg   y |  j  | | | } Wn t k
 r- d  SX| d | k rc d | k rc |  j  | | | d =n  d  S(   NR   R   (   R   t   KeyError(   R   R	   R
   R   R   R   (    (    sL   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/HashCache.pyt   unmark_for_purge'   s    c         C@  s   x t  |  j  D]s } xj t  |  j |  D]U } xL t  |  j | |  D]3 } d |  j | | | k rH |  j | | =PqH qH Wq* Wq Wd  S(   NR   (   R   R   (   R   R   R   t   m(    (    sL   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/HashCache.pyR   /   s    c         C@  sJ   t  d |  j d d  } t t |  d   } t j | |  Wd  QXd  S(   NR   t   versioni   t   wb(   R   R   t   openR   t   picklet   dump(   R   t   fR   t   fp(    (    sL   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/HashCache.pyt   save7   s    c         C@  sb   t  t |  d   } t j |  } Wd  QX| j d  d k r^ d | k r^ | d |  _ n  d  S(   Nt   rbR   i   R   (   R   R   R   t   loadt   getR   (   R   R   R   R   (    (    sL   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/HashCache.pyR"   <   s    !(
   t   __name__t
   __module__R   R   R   R   R   R   R    R"   (    (    (    sL   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/HashCache.pyR      s   								(	   t
   __future__R    t   cPickleR   t   ImportErrort   UtilsR   t   objectR   (    (    (    sL   /oak/stanford/groups/akundaje/marinovg/programs/s3cmd-master/S3/HashCache.pyt   <module>   s   