Source code for watch_do.watchers.hash
"""Hash based watchers.
"""
import hashlib
from . import Watcher
[docs]class MD5(Watcher):
"""MD5 hash based change detection.
This class uses MD5 hashes based on the files contents to enable change
detection.
"""
def _get_value(self):
"""Get the current MD5 hash value of the file.
Raises:
FileNotFoundError: If the file could not be found.
Returns:
str: A string representation of the MD5 hash of the file.
"""
md5_hash = hashlib.md5()
with open(self.file_name, 'rb') as file_handle:
chunk = file_handle.read(4096)
while chunk:
md5_hash.update(chunk)
chunk = file_handle.read(4096)
return md5_hash.hexdigest()