• Get Review Board
  • What's New
  • Products
  • Review Board Code review, image review, and document review
  • Documentation
  • Release Notes
  • Power Pack Enterprise integrations, reports, and enhanced document review
  • Try for 60 Days
  • Purchase
  • RBCommons Review Board as a Service, hosted by us
  • Pricing
  • RBTools Command line tools and Python API for Review Board
  • Documentation
  • Release Notes
  • Review Bot Automated code review, connecting tools you already use
  • Documentation
  • Release Notes
  • RB Gateway Manage Git and Mercurial repositories in your network
  • Documentation
  • Release Notes
  • Learn and Explore
  • What is Code Review?
  • Documentation
  • Frequently Asked Questions
  • Support Options
  • Third-Party Integrations
  • Demo
  • Review Board RBTools Power Pack Review Bot Djblets RB Gateway
    1. RBTools 5.x
    2. Version 5.x
    3. Version 4.x
    4. Version 3.x
    5. Version 2.0
    6. Version 1.0
    7. Version 0.7
    8. Version 0.6
    9. Version 0.5
    10. RBTools Python API
    11. Module and Class References
    12. rbtools.utils.diffs
  • Home
  • Installing RBTools
  • rbt Command
  • Configuration
  • Authenticating to Review Board
  • Repository Configuration
  • Per-User Configuration
  • Team Foundation Server Configuration
  • Commands
  • alias
  • api-get
  • attach
  • clear-cache
  • close
  • diff
  • install
  • land
  • list-repo-types
  • login
  • logout
  • patch
  • post
  • publish
  • review
  • setup-completion
  • setup-repo
  • stamp
  • status
  • status-update
  • RBTools Workflows
  • Using RBTools With Cliosoft SOS
  • Using RBTools with Git
  • Using RBTools with HCL VersionVault and IBM ClearCase
  • Using RBTools With Perforce
  • RBTools Python API
  • Overview of the Python API Client
  • Tutorial
  • Resource-Specific Functionality
  • Module and Class References
  • rbtools
  • rbtools.deprecation
  • rbtools.api
  • rbtools.api.cache
  • rbtools.api.capabilities
  • rbtools.api.client
  • rbtools.api.decode
  • rbtools.api.decorators
  • rbtools.api.errors
  • rbtools.api.factory
  • rbtools.api.request
  • rbtools.api.resource
  • rbtools.api.transport
  • rbtools.api.transport.sync
  • rbtools.api.utils
  • rbtools.clients
  • rbtools.clients.base
  • rbtools.clients.base.patch
  • rbtools.clients.base.registry
  • rbtools.clients.base.repository
  • rbtools.clients.base.scmclient
  • rbtools.clients.errors
  • rbtools.clients.bazaar
  • rbtools.clients.clearcase
  • rbtools.clients.cvs
  • rbtools.clients.git
  • rbtools.clients.mercurial
  • rbtools.clients.perforce
  • rbtools.clients.plastic
  • rbtools.clients.sos
  • rbtools.clients.svn
  • rbtools.clients.tfs
  • rbtools.config
  • rbtools.config.config
  • rbtools.config.loader
  • rbtools.diffs
  • rbtools.diffs.patches
  • rbtools.diffs.patcher
  • rbtools.diffs.tools
  • rbtools.diffs.tools.backends
  • rbtools.diffs.tools.backends.gnu
  • rbtools.diffs.tools.base
  • rbtools.diffs.tools.base.diff_file_result
  • rbtools.diffs.tools.base.diff_tool
  • rbtools.diffs.tools.errors
  • rbtools.diffs.tools.registry
  • rbtools.diffs.writers
  • rbtools.commands
  • rbtools.commands.main
  • rbtools.commands
  • rbtools.commands.base
  • rbtools.commands.base.commands
  • rbtools.commands.base.errors
  • rbtools.commands.base.options
  • rbtools.commands.base.output
  • rbtools.commands.alias
  • rbtools.commands.api_get
  • rbtools.commands.attach
  • rbtools.commands.clearcache
  • rbtools.commands.close
  • rbtools.commands.diff
  • rbtools.commands.info
  • rbtools.commands.install
  • rbtools.commands.land
  • rbtools.commands.list_repo_types
  • rbtools.commands.login
  • rbtools.commands.logout
  • rbtools.commands.patch
  • rbtools.commands.post
  • rbtools.commands.publish
  • rbtools.commands.review
  • rbtools.commands.setup_completion
  • rbtools.commands.setup_repo
  • rbtools.commands.stamp
  • rbtools.commands.status
  • rbtools.commands.status_update
  • rbtools.hooks
  • rbtools.hooks.common
  • rbtools.hooks.git
  • rbtools.testing
  • rbtools.testing.api
  • rbtools.testing.api.payloads
  • rbtools.testing.api.transport
  • rbtools.testing.commands
  • rbtools.testing.testcase
  • rbtools.testing.transport
  • rbtools.utils
  • rbtools.utils.aliases
  • rbtools.utils.browser
  • rbtools.utils.checks
  • rbtools.utils.commands
  • rbtools.utils.console
  • rbtools.utils.diffs
  • rbtools.utils.encoding
  • rbtools.utils.errors
  • rbtools.utils.filesystem
  • rbtools.utils.graphs
  • rbtools.utils.mimetypes
  • rbtools.utils.process
  • rbtools.utils.repository
  • rbtools.utils.review_request
  • rbtools.utils.source_tree
  • rbtools.utils.users
  • Glossary
  • General Index
  • Python Module Index
  • Release Notes
  • rbtools.utils.diffs¶

    Utilities for generating or parsing diffs.

    Functions

    filename_match_any_patterns(filename, ...[, ...])

    Check if the given filename matches any of the patterns.

    filter_diff(diff, file_index_re, *, ...[, ...])

    Filter through the lines of diff to exclude files.

    normalize_patterns(patterns, *, base_dir[, cwd])

    Normalize a list of patterns so that they are all absolute paths.

    remove_filenames_matching_patterns(...)

    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.

    Parameters:
    • filename (str) – The filename to match against.

    • patterns (list of str) – The list of patterns to try to match.

    • base_dir (str, optional) – An optional base directory to prepend to the filename.

    Returns:

    True if one of the patterns matched. False if no patterns matched.

    Return type:

    bool

    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, and base_dir must now be provided as keyword arguments. This will be mandatory in RBTools 5.

    Parameters:
    • diff (list of bytes) – The list of lines in a diff.

    • 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 of str) –

      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 and cwd must now be provided as keyword arguments. This will be mandatory in RBTools 5.

    Parameters:
    • patterns (list of str) – The list of patterns to normalize.

    • base_dir (str) – The base directory to compare pattern paths to.

    • cwd (str, optional) –

      The current working directory to use for normalization.

      If not provided, the current directory will be computed.

    Returns:

    The normalized list of patterns.

    Return type:

    list of str

    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 and base_dir must now be provided as keyword arguments. This will be mandatory in RBTools 5.

    Parameters:
    • filenames (list of str) – The list of filenames to filter.

    • patterns (list of str) – The list of patterns used to match filenames to include.

    • base_dir (str) – The base director that filenames are expected to be relative to.

    Yields:

    str – Each filename that has been excluded.

    Keep up with the latest Review Board releases, security updates, and helpful information.

    About
    News
    Demo
    RBCommons Hosting
    Integrations
    Happy Users
    Support Options
    Documentation
    FAQ
    User Manual
    RBTools
    Administration Guide
    Power Pack
    Release Notes
    Downloads
    Review Board
    RBTools
    Djblets
    Power Pack
    Package Store
    PGP Signatures
    Contributing
    Bug Tracker
    Submit Patches
    Development Setup
    Wiki
    Follow Us
    Mailing Lists
    Reddit
    Twitter
    Mastodon
    Facebook
    YouTube

    Copyright © 2006-2025 Beanbag, Inc. All rights reserved.

    Terms of Service — Privacy Policy — AI Ethics Policy — Branding

    On this page

    • [Top]
    • filename_match_any_patterns()
    • filter_diff()
    • normalize_patterns()
    • remove_filenames_matching_patterns()