Source code for dtoolcore.filehasher

"""Module for generating file hashes."""

import hashlib


[docs]class FileHasher(object): """Class for associating hash functions with names.""" def __init__(self, hash_func): self.func = hash_func self.name = hash_func.__name__ def __call__(self, filename): return self.func(filename)
def _hash_the_file(hasher, filename): """Helper function for creating hash functions. See implementation of :func:`dtoolcore.filehasher.shasum` for more usage details. """ BUF_SIZE = 65536 with open(filename, 'rb') as f: buf = f.read(BUF_SIZE) while len(buf) > 0: hasher.update(buf) buf = f.read(BUF_SIZE) return hasher
[docs]def hashsum_hexdigest(hasher, filename): """Helper function for creating hash functions. See implementation of :func:`dtoolcore.filehasher.shasum` for more usage details. """ hasher = _hash_the_file(hasher, filename) return hasher.hexdigest()
[docs]def hashsum_digest(hasher, filename): """Helper function for creating hash functions. See implementation of :func:`dtoolcore.filehasher.shasum` for more usage details. """ hasher = _hash_the_file(hasher, filename) return hasher.digest()
[docs]def sha1sum_hexdigest(filename): """Return hex digest of SHA-1 hash of file. :param filename: path to file :returns: shasum of file """ hasher = hashlib.sha1() return hashsum_hexdigest(hasher, filename)
[docs]def sha256sum_hexdigest(filename): """Return hex digest of SHA-256 hash of file. :param filename: path to file :returns: shasum of file """ hasher = hashlib.sha256() return hashsum_hexdigest(hasher, filename)
[docs]def md5sum_hexdigest(filename): """Return hex digest of MD5sum of file. :param filename: path to file :returns: shasum of file """ hasher = hashlib.md5() return hashsum_hexdigest(hasher, filename)
[docs]def md5sum_digest(filename): """Return digest of MD5sum of file. :param filename: path to file :returns: shasum of file """ hasher = hashlib.md5() return hashsum_digest(hasher, filename)