| Index: owners.py
|
| diff --git a/owners.py b/owners.py
|
| index 8007e171c29c059589be1b0ea77f7a9b74694413..c53f0123d09cb9e7edb03d05278b42da9522f112 100644
|
| --- a/owners.py
|
| +++ b/owners.py
|
| @@ -129,13 +129,8 @@ class Database(object):
|
| suggested_owners = set(['<anyone>'])
|
| return suggested_owners
|
|
|
| - # TODO(dpranke): rename to objects_not_covered_by
|
| - def directories_not_covered_by(self, files, reviewers):
|
| - """Returns the set of directories that are not owned by a reviewer.
|
| -
|
| - Determines which of the given files are not owned by at least one of the
|
| - reviewers, then returns a set containing the applicable enclosing
|
| - directories, i.e. the ones upward from the files that have OWNERS files.
|
| + def files_not_covered_by(self, files, reviewers):
|
| + """Returns the files not owned by one of the reviewers.
|
|
|
| Args:
|
| files is a sequence of paths relative to (and under) self.root.
|
| @@ -145,20 +140,11 @@ class Database(object):
|
| self._check_reviewers(reviewers)
|
| self._load_data_needed_for(files)
|
|
|
| - objs = set()
|
| - for f in files:
|
| - if f in self.owners_for:
|
| - objs.add(f)
|
| - else:
|
| - objs.add(self.os_path.dirname(f))
|
| -
|
| covered_objs = self._objs_covered_by(reviewers)
|
| - uncovered_objs = [self._enclosing_obj_with_owners(o) for o in objs
|
| - if not self._is_obj_covered_by(o, covered_objs)]
|
| + uncovered_files = [f for f in files
|
| + if not self._is_obj_covered_by(f, covered_objs)]
|
|
|
| - return set(uncovered_objs)
|
| -
|
| - objects_not_covered_by = directories_not_covered_by
|
| + return set(uncovered_files)
|
|
|
| def _check_paths(self, files):
|
| def _is_under(f, pfx):
|
| @@ -171,38 +157,29 @@ class Database(object):
|
| _assert_is_collection(reviewers)
|
| assert all(self.email_regexp.match(r) for r in reviewers)
|
|
|
| - # TODO(dpranke): Rename to _objs_covered_by and update_callers
|
| - def _dirs_covered_by(self, reviewers):
|
| - dirs = self.owned_by[EVERYONE]
|
| + def _objs_covered_by(self, reviewers):
|
| + objs = self.owned_by[EVERYONE]
|
| for r in reviewers:
|
| - dirs = dirs | self.owned_by.get(r, set())
|
| - return dirs
|
| -
|
| - _objs_covered_by = _dirs_covered_by
|
| + objs = objs | self.owned_by.get(r, set())
|
| + return objs
|
|
|
| - def _stop_looking(self, dirname):
|
| - return dirname in self.stop_looking
|
| + def _stop_looking(self, objname):
|
| + return objname in self.stop_looking
|
|
|
| - # TODO(dpranke): Rename to _is_dir_covered_by and update callers.
|
| - def _is_dir_covered_by(self, dirname, covered_dirs):
|
| - while not dirname in covered_dirs and not self._stop_looking(dirname):
|
| - dirname = self.os_path.dirname(dirname)
|
| - return dirname in covered_dirs
|
| + def _is_obj_covered_by(self, objname, covered_objs):
|
| + while not objname in covered_objs and not self._stop_looking(objname):
|
| + objname = self.os_path.dirname(objname)
|
| + return objname in covered_objs
|
|
|
| - _is_obj_covered_by = _is_dir_covered_by
|
| -
|
| - # TODO(dpranke): Rename to _enclosing_obj_with_owners and update callers.
|
| - def _enclosing_dir_with_owners(self, directory):
|
| + def _enclosing_dir_with_owners(self, objname):
|
| """Returns the innermost enclosing directory that has an OWNERS file."""
|
| - dirpath = directory
|
| + dirpath = objname
|
| while not dirpath in self.owners_for:
|
| if self._stop_looking(dirpath):
|
| break
|
| dirpath = self.os_path.dirname(dirpath)
|
| return dirpath
|
|
|
| - _enclosing_obj_with_owners = _enclosing_dir_with_owners
|
| -
|
| def _load_data_needed_for(self, files):
|
| for f in files:
|
| dirpath = self.os_path.dirname(f)
|
|
|