def apply(self): for paragraph in utils.get_by_type(self._data, "files"): if paragraph is None: break for patterns in paragraph["Files"]: paragraph.patterns = [] for pattern in patterns.split(): paragraph.patterns.append(pattern) return True
def _get_matches(self): paragraphs = [] for paragraph in utils.get_by_type(self._paragraphs, "files"): paragraphs.append((paragraph, paragraph.patterns)) for root, dirs, files in os.walk(self._directory, topdown=True): root = relpath(root, self._directory) paths = [join(root, filename) for filename in files] self._unmatch |= set(paths) for paragraph, patterns in paragraphs: for pattern in patterns: goodfiles = [] if pattern.find(os.path.sep) == -1: pattern_norm = os.path.join(os.path.curdir, pattern) goodfiles.extend(fnmatch.filter(paths, pattern_norm)) goodfiles.extend(fnmatch.filter(paths, pattern)) self._unmatch -= set(goodfiles) self._match.update({f: paragraph for f in goodfiles})