• 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 dev
    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.diffs.tools.registry
  • 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
  • This documentation covers the in-development release of RBTools. You can see the stable RBTools documentation or all previous versions.

    rbtools.diffs.tools.registry¶

    Registry of available diff tools.

    New in version 4.0.

    Module Attributes

    diff_tools_registry

    The main diff tools registry.

    Classes

    DiffToolsRegistry()

    A registry managing known and available diff tools.

    class rbtools.diffs.tools.registry.DiffToolsRegistry[source]¶

    Bases: object

    A registry managing known and available diff tools.

    This provides functionality for querying and registering diff tools classes and instances.

    As a single diff tool instance can be used for multiple operations, the registry will cache any created instances and return them the next time they’re needed, instead of creating a new instance every time. This avoids the up-front cost of checking for tool availability more than once.

    The registry provides a built-in list of supported tools. For future extensibility, additional tools can be registered as well.

    New in version 4.0.

    __init__()[source]¶

    Initialize the registry.

    iter_diff_tool_classes() → Iterator[Type[BaseDiffTool]][source]¶

    Iterate through all registered diff tool classes.

    This does not guarantee order.

    Yields:

    type – Each registered subclass of BaseDiffTool.

    get_diff_tool_class(diff_tool_id: str) → Optional[Type[BaseDiffTool]][source]¶

    Return a diff tool class with the given ID.

    If the ID could not be found, this will return None.

    Parameters:

    diff_tool_id (str) – The ID of the diff tool to return.

    Returns:

    The diff tool class, or None if not found.

    Return type:

    type

    get_available(compatible_diff_tool_ids: Optional[Iterable[str]] = None) → BaseDiffTool[source]¶

    Return an available diff tool out of an optional set of IDs.

    This will attempt to find an available diff tool that, optionally restricting results to a set of compatible diff tool IDs.

    The instance is cached for future lookups.

    Parameters:

    compatible_diff_tool_ids (set, optional) – An optional set of compatible diff tool IDs.

    Returns:

    The available diff tool instance.

    Return type:

    rbtools.diffs.tools.base.diff_tool.BaseDiffTool

    Raises:

    rbtools.diffs.tools.errors.MissingDiffToolError – A compatible diff tool could not be found.

    register(diff_tool_cls: Type[BaseDiffTool]) → None[source]¶

    Register a diff tool class.

    To be usable, a tool must be registered before any operations are performed that return an instantiated tool.

    Parameters:

    diff_tool_cls (type) – The diff tool class to register.

    reset() → None[source]¶

    Reset the registry to an empty state.

    This is primarily intended for unit testing, to ensure that any new attempts to fetch tools will result in fresh instances.

    rbtools.diffs.tools.registry.diff_tools_registry = <rbtools.diffs.tools.registry.DiffToolsRegistry object>[source]¶

    The main diff tools registry.

    New in version 4.0.

    Type:

    DiffToolsRegistry

    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]
    • DiffToolsRegistry
      • DiffToolsRegistry.__init__()
      • DiffToolsRegistry.iter_diff_tool_classes()
      • DiffToolsRegistry.get_diff_tool_class()
      • DiffToolsRegistry.get_available()
      • DiffToolsRegistry.register()
      • DiffToolsRegistry.reset()
    • diff_tools_registry