code: def walk(self, top, file_list={}):
          
          for root, dirs, files in os.walk(top, topdown=False):
              if os.path.basename(root) in self.ignore_dirs:
                  # Do not dig in ignored dirs
                  continue
  
              for name in files:
                  full_path = os.path.join(root, name)
                  if self.include(full_path):
                      if os.path.isfile(full_path):
                          # preventing fail if the file vanishes
                          content = open(full_path).read()
                          hashcode = hashlib.sha224(content).hexdigest()
                          file_list[full_path] = hashcode
              for name in dirs:
                  if name not in self.ignore_dirs:
                      self.walk(os.path.join(root, name), file_list)
          return file_list
docs: Walks the walk. nah, seriously: reads the file and stores a hashkey
          corresponding to its content.