• 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.clients.base.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.clients.base.registry¶

    Registry of available SCMClients.

    New in version 4.0.

    Module Attributes

    scmclient_registry

    The main SCMClients registry used by RBTools.

    Classes

    SCMClientRegistry()

    A registry for looking up and fetching available SCMClients.

    class rbtools.clients.base.registry.SCMClientRegistry[source]¶

    Bases: object

    A registry for looking up and fetching available SCMClients.

    This keeps track of all available BaseSCMClient subclasses available to RBTools. It supplies a built-in list of clients shipped with RBTools and ones provided by Python packages supplying a rbtools_scm_clients entry point group.

    Built-in SCMClients and ones in entry points are only loaded once per registry, and only if needed based on the operations performed. Listing will always ensure both sets of SCMClients are loaded.

    Legacy SCMClients provided by entry points will be assigned a scmclient_id based on the entry point name, if one is not already assigned, and will emit a warning. Starting in RBTools 5.0, custom SCMClients will need to explicitly set an ID.

    New in version 4.0.

    __init__() → None[source]¶

    Initialize the registry.

    __contains__(scmclient: Union[str, Type[BaseSCMClient]]) → bool[source]¶

    Return whether a SCMClient type or ID is in the registry.

    Parameters:

    scmclient (str or type) – The SCMClient ID or class type to check for.

    Returns:

    True if the registry contains this client. False if it does not.

    Return type:

    bool

    Raises:

    TypeError – scmclient is not an ID or a SCMClient class.

    __iter__() → Iterator[Type[BaseSCMClient]][source]¶

    Iterate through all registered SCMClient classes.

    This will yield each built-in SCMClient, followed by each one provided by an entrypoint.

    This will force both sets of SCMClients to load, if not already loaded.

    Yields:

    type – A registered BaseSCMClient subclass.

    get(scmclient_id: str) → Type[BaseSCMClient][source]¶

    Return a SCMClient class with the given ID.

    This will first check the built-in list of SCMClients. If not found, entry points will be loaded (if not already loaded), and the ID will be looked up amongst that set.

    Parameters:

    scmclient_id (str) – The ID of the SCMClient.

    Returns:

    The registered BaseSCMClient subclass for the given ID.

    Return type:

    type

    Raises:

    rbtools.clients.errors.SCMClientNotFoundError – A client matching the ID could not be found.

    register(scmclient_cls: Type[BaseSCMClient]) → None[source]¶

    Register a SCMClient class.

    The class must have scmclient_id set, and it must be unique.

    Parameters:

    scmclient_cls (type) – The class to register.

    Raises:

    ValueError – The SCMClient ID is unset or not unique.

    rbtools.clients.base.registry.scmclient_registry = <rbtools.clients.base.registry.SCMClientRegistry object>[source]¶

    The main SCMClients registry used by RBTools.

    New in version 4.0.

    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]
    • SCMClientRegistry
      • SCMClientRegistry.__init__()
      • SCMClientRegistry.__contains__()
      • SCMClientRegistry.__iter__()
      • SCMClientRegistry.get()
      • SCMClientRegistry.register()
    • scmclient_registry