Source code for pydmt.utils.digester
"""
digester.py
"""
import hashlib
from pydmt.utils.filesystem import files_under_folders
BLOCK_SIZE = 65536
ALGORITHM_NAME = "sha1"
[docs]
class Digester:
def __init__(self):
self.hash_object = hashlib.new(ALGORITHM_NAME)
[docs]
def add_file(self, filename: str) -> None:
with open(filename, 'rb') as file_handle:
buf = file_handle.read(BLOCK_SIZE)
while len(buf) > 0:
self.hash_object.update(buf)
buf = file_handle.read(BLOCK_SIZE)
[docs]
def add_files(self, filenames: list[str]) -> None:
for filename in filenames:
self.add_file(filename)
[docs]
def add_folders(self, folders: list[str]) -> None:
for filename in files_under_folders(folders=folders):
self.add_file(filename)
[docs]
def add_files_folders(self, files: list[str], folders: list[str]) -> None:
f = files
f.extend(files_under_folders(folders=folders))
self.add_files(f)
[docs]
def get_hexdigest(self):
return self.hash_object.hexdigest()