rbtools.utils.diffs¶
Utilities for generating or parsing diffs.
Functions
|
Check if the given filename matches any of the patterns. |
|
Filter through the lines of diff to exclude files. |
|
Normalize a list of patterns so that they are all absolute paths. |
Return an iterable of all filenames that do not match any patterns. |
- rbtools.utils.diffs.filename_match_any_patterns(filename: str, patterns: Iterable[str], *, base_dir: str = '') bool [source]¶
Check if the given filename matches any of the patterns.
If base_dir is not supplied, it will treat the filename as relative to the current working directory.
Changed in version 4.0:
base_dir
must now be provided as a keyword argument. This will be mandatory in RBTools 5.
- rbtools.utils.diffs.filter_diff(diff: Iterable[bytes], file_index_re: Pattern[bytes], *, exclude_patterns: List[str], base_dir: str = '') Iterator[bytes] [source]¶
Filter through the lines of diff to exclude files.
This function looks for lines that indicate the start of a new file in the diff and checks if the filename matches any of the given patterns. If it does, the diff lines corresponding to that file will not be yielded; if the filename does not match any patterns, the lines will be yielded as normal.
Changed in version 4.0:
exclude_patterns
, andbase_dir
must now be provided as keyword arguments. This will be mandatory in RBTools 5.- Parameters:
file_index_re (
re.Pattern
) –A compiled regex used to match if and only if a new file’s diff is being started.
This must have exactly one sub-group used to match the filename. For example:
^filename: (.+)$
.exclude_patterns (
list
ofstr
) –The list of patterns to try to match against filenames.
Any pattern matched will cause the file to be excluded from the diff.
base_dir (
str
, optional) –An optional base directory to prepend to each filename.
If not provided, filenames should be relative to the root of the repository.
- Yields:
bytes
– A line of content from the diff.
- rbtools.utils.diffs.normalize_patterns(patterns: Iterable[str], *, base_dir: str, cwd: Optional[str] = None) List[str] [source]¶
Normalize a list of patterns so that they are all absolute paths.
Paths that begin with a path separator are interpreted as being relative to
base_dir
. All other paths are interpreted as being relative to the current working directory.Changed in version 4.0:
base_dir
andcwd
must now be provided as keyword arguments. This will be mandatory in RBTools 5.- Parameters:
- Returns:
The normalized list of patterns.
- Return type:
- rbtools.utils.diffs.remove_filenames_matching_patterns(filenames: Iterable[str], *, patterns: List[str], base_dir: str) Iterator[str] [source]¶
Return an iterable of all filenames that do not match any patterns.
Changed in version 4.0:
patterns
andbase_dir
must now be provided as keyword arguments. This will be mandatory in RBTools 5.