def _filter_files(files: Iterable[Path], cumulative_data: CumulativeData) -> Iterable[Path]: filters = ( LabelFilter("TARGET", cumulative_data.labels), LabelFilter("FEATURE", cumulative_data.features), LabelFilter("COMPONENT", cumulative_data.components), ) return filter_files(files, filters)
def _filter_files(files: Iterable[Path], filter_data: FileFilterData) -> Iterable[Path]: filters = ( LabelFilter("TARGET", filter_data.labels), LabelFilter("FEATURE", filter_data.features), LabelFilter("COMPONENT", filter_data.components), RequiresFilter(filter_data.requires), ) return filter_files(files, filters)
def _filter_files(files: Iterable[Path], labels: Iterable[str], features: Iterable[str], components: Iterable[str]) -> Iterable[Path]: filters = ( LabelFilter("TARGET", labels), LabelFilter("FEATURE", features), LabelFilter("COMPONENT", components), ) return filter_files(files, filters)
def test_respects_given_filters(self): matching_paths = [ Path("foo", "file.txt"), Path("hello", "world", "file.txt"), ] excluded_paths = [ Path("bar", "file.txt"), Path("foo", "foo-bar", "file.txt"), ] def my_filter(path): return "bar" not in str(path) subject = filter_files((matching_paths + excluded_paths), [my_filter]) self.assertEqual(len(subject), len(matching_paths)) for path in matching_paths: self.assertIn(path, subject)
def _filter_files( files: Iterable[Path], labels: Iterable[str], features: Iterable[str], components: Iterable[str], requires: Iterable[str], ) -> Iterable[Path]: filters = ( LabelFilter("TARGET", labels), LabelFilter("FEATURE", features), LabelFilter("COMPONENT", components), ) filtered_files = filter_files(files, filters) if not requires: return filtered_files else: requires_filter = RequiresFilter(requires) return requires_filter(filtered_files)