Source code for pydmt.utils.digest
"""
digest.py
"""
import hashlib
from pydmt.utils.filesystem import files_under_folders
BLOCK_SIZE = 65536
[docs]
def hex_digest_files(filenames: list[str], algorithm_name: str) -> str:
hash_object = hashlib.new(algorithm_name)
for filename in filenames:
with open(filename, 'rb') as file_handle:
buf = file_handle.read(BLOCK_SIZE)
while len(buf) > 0:
hash_object.update(buf)
buf = file_handle.read(BLOCK_SIZE)
return hash_object.hexdigest()
[docs]
def hex_digest_file(filename: str, algorithm_name: str) -> str:
return hex_digest_files(filenames=[filename], algorithm_name=algorithm_name)
[docs]
def sha1_file(filename: str) -> str:
return hex_digest_file(filename=filename, algorithm_name="sha1")
[docs]
def sha1_files(filenames: list[str]) -> str:
return hex_digest_files(filenames=filenames, algorithm_name="sha1")
[docs]
def sha1_folders(folders: list[str]) -> str:
return sha1_files(filenames=files_under_folders(folders=folders))
[docs]
def sha1_files_folders(files: list[str], folders: list[str]) -> str:
f = files
f.extend(files_under_folders(folders=folders))
return sha1_files(f)