code: def _fingerprint_files(self, filepaths):
      
      hasher = sha1()
      # Note that we don't sort the filepaths, as their order may have meaning.
      for filepath in filepaths:
        filepath = self._assert_in_buildroot(filepath)
        hasher.update(os.path.relpath(filepath, get_buildroot()).encode('utf-8'))
        with open(filepath, 'rb') as f:
          hasher.update(f.read())
      return hasher.hexdigest()
docs: Returns a fingerprint of the given filepaths and their contents.
  
      This assumes the files are small enough to be read into memory.