code: def hash(self, index_func=os.path.getmtime):
          
          # TODO alternative to filehash => mtime as a faster alternative
          shadir = hashlib.sha256()
          for f in self.files():
              try:
                  shadir.update(str(index_func(os.path.join(self.path, f))))
              except (IOError, OSError):
                  pass
          return shadir.hexdigest()
docs: Hash for the entire directory (except excluded files) recursively.
  
          Use mtime instead of sha256 by default for a faster hash.
  
          >>> dir.hash(index_func=dirtools.filehash)