def METHOD_NAME(self) -> str:
    """Calculate the md5 hash of the directory contents.
    This can be resource intensive depending on the size of the project.
    """
    sorted_files = list(self.sorted())
    for include_file in self._include_files_in_hash:
        if include_file not in sorted_files:
            sorted_files.append(include_file)
    file_hash = FileHash(hashlib.md5())
    file_hash.add_files(sorted(sorted_files), relative_to=self.project_root)
    return file_hash.hexdigest