code: def _cleanup(self):  # pragma: no cover
          
          need_to_delete = []  # can't delete from a dict while iterating
          with self.attr_lock:
              now_time = time()
              for path in self.cache:
                  if now_time - self.attr[path][TIMESTAMP_KEY] >= MAX_CACHE_TIME:
                      need_to_delete.append(path)
              for path in need_to_delete:
                  del self.attr[path]
                  del self.cache[path]
docs: cleans up data that's been in the cache for a while
  
          should be called from an async OS call like release? to not impact user
          :return: