// NB: Watchman will never trigger an invalidation event for the root directory that// is being watched. Instead, we treat any invalidation of a path directly in the// root directory as an invalidation of the root.ifany(os.path.dirname(f)in("", ".")for f in filenames):
filenames = tuple(filenames) + ("", ".")
with self._product_graph_lock:
invalidated = self._scheduler.invalidate(filenames)
logger.debug("invalidated %d nodes for: %s", invalidated, filenames)
return invalidated
After Change
// NB: Watchman no longer triggers events when children are created/deleted under a directory,// so we always need to invalidate the direct parent as well.
filenames = set(direct_filenames)
filenames.update(os.path.dirname(f) for f in direct_filenames)
with self._product_graph_lock:
invalidated = self._scheduler.invalidate(filenames)
logger.debug("invalidated %d nodes for: %s", invalidated, filenames)
return invalidated