o Qa @sXddlmZddlZddlmZddlmZddlmZdZeZGdd d eZ dS) )absolute_importN) SortedDict)Utils)Config d41d8cd98f00b204e9800998ecf8427ec@s>eZdZdddZddZddZd d Zd d Zd dZdS)FileDictNTcKs0tj|f|pi|d|t|_t|_dS)N)mapping ignore_case)r__init__dict hardlinks_md5by_md5)selfr r kwargsr-/usr/lib/python3/dist-packages/S3/FileDict.pyr s zFileDict.__init__cCs<|sdS|dur dS|tkrdS||jvr||j|<dSdSN)zero_length_md5rr relative_filemd5rrr record_md5s zFileDict.record_md5cCs|sdS|j|dSr)rget)rrrrr find_md5_one#szFileDict.find_md5_onecCstd}d||vr||dS||}|dur,dtjvr,td|t||d}||||||d<|S)z>returns md5 if it can, or raises IOError if file is unreadableNrz doing file I/O to read md5 of %s full_name)get_hardlink_md5cfg sync_checksloggingdebugr hash_file_md5rrrrrget_md5(s     zFileDict.get_md5cCsf|durdS|dkr dS|dks|dkrdS||jvr!t|j|<||j|vr1||j||<dSdS)Nr)r r )rrdevinodersizerrrrecord_hardlink5s  zFileDict.record_hardlinkcCsFz||d}||d}|j||}W|Sty"d}Y|Sw)Nr#r$)r KeyError)rrr#r$rrrrrCs   zFileDict.get_hardlink_md5)NT) __name__ __module__ __qualname__r rrr"r&rrrrrrs   r) __future__rrrrrrrrrrrrs