# pluginmanager module

`binaryninja.pluginmanager.RepoPlugin`(handle) | ``RepoPlugin` is mostly read-only, however you can install/uninstall enable/disable plugins. RepoPlugins are
`binaryninja.pluginmanager.Repository`(handle) | `Repository` is a read-only class. Use RepositoryManager to Enable/Disable/Install/Uninstall plugins.
`binaryninja.pluginmanager.RepositoryManager`([...]) | `RepositoryManager` Keeps track of all the repositories and keeps the enabled_plugins.json file coherent with
`binaryninja.pluginmanager.range`(*args) | A Python2 and Python3 Compatible Range Generator

class `binaryninja.pluginmanager.``RepoPlugin`(handle)

  Bases: `object`

  ``RepoPlugin` is mostly read-only, however you can install/uninstall enable/disable plugins. RepoPlugins are created by parsing the plugins.json in a plugin repository.

  class `PluginType`

    Bases: `binaryninja.enum.IntEnum`

    `ArchitecturePluginType` = <PluginType.ArchitecturePluginType: 2>
    `BinaryViewPluginType` = <PluginType.BinaryViewPluginType: 3>
    `CorePluginType` = <PluginType.CorePluginType: 0>
    `UiPluginType` = <PluginType.UiPluginType: 1>
  class `RepoPlugin.``PluginUpdateStatus`

    Bases: `binaryninja.enum.IntEnum`

    `UpToDatePluginStatus` = <PluginUpdateStatus.UpToDatePluginStatus: 0>
    `UpdatesAvailablePluginStatus` = <PluginUpdateStatus.UpdatesAvailablePluginStatus: 1>
  `RepoPlugin.``api`

    string indicating the api used by the plugin

  `RepoPlugin.``description`

    String short description of the plugin

  `RepoPlugin.``enabled`

    Boolean True if the plugin is currently enabled, False otherwise

  `RepoPlugin.``installed`

    Boolean True if the plugin is installed, False otherwise

  `RepoPlugin.``license`

    String short license description (ie MIT, BSD, GPLv2, etc)

  `RepoPlugin.``license_text`

    String complete license text for the given plugin

  `RepoPlugin.``long_description`

    String long description of the plugin

  `RepoPlugin.``minimum_version`

    String minimum version the plugin was tested on

  `RepoPlugin.``name`

    String name of the plugin

  `RepoPlugin.``path`

    Relative path from the base of the repository to the actual plugin

  `RepoPlugin.``plugin_types`

    List of PluginType enumeration objects indicating the plugin type(s)

  `RepoPlugin.``update_status`

    PluginUpdateStatus enumeration indicating if the plugin is up to date or not

  `RepoPlugin.``url`

    String url of the plugin’s git repository

  `RepoPlugin.``version`

    String version of the plugin

class `binaryninja.pluginmanager.``Repository`(handle)

  Bases: `object`

  `Repository` is a read-only class. Use RepositoryManager to Enable/Disable/Install/Uninstall plugins.

  `full_path`

    String full path the repository

  `initialized`

    Boolean True when the repository has been initialized

  `local_reference`

    String for the local git reference (ie ‘master’)

  `path`

    String local path to store the given plugin repository

  `plugins`

    List of RepoPlugin objects contained within this repository

  `remote_reference`

    String for the remote git reference (ie ‘origin’)

  `url`

    String url of the git repository where the plugin repository’s are stored

class `binaryninja.pluginmanager.``RepositoryManager`(handle=None)

  Bases: `object`

  `RepositoryManager` Keeps track of all the repositories and keeps the enabled_plugins.json file coherent with the plugins that are installed/unstalled enabled/disabled

  `add_repository`(url=None, repopath=None, localreference='master', remotereference='origin')

    `add_repository` adds a new plugin repository for the manager to track.

    Parameters:

    - url (str) – Url to the git repository where the plugins are stored.
    - repopath (str) – path to where the repository will be stored on disk locally
    - localreference (str) – Optional reference to the local tracking branch typically “master”
    - remotereference (str) – Optional reference to the remote tracking branch typically “origin”

    Returns: | Boolean value True if the repository was successfully added, False otherwise.
    Return type: | Boolean

    Example:

        >>> mgr = RepositoryManager()
        >>> mgr.add_repository(url="https://github.com/vector35/community-plugins.git",
                               repopath="myrepo",
                               localreference="master", remotereference="origin")
        True
        >>>

  `check_for_updates`()

    Check for updates for all managed Repository objects

  `default_repository`

    Gets the default Repository

  `disable_plugin`(plugin, repo=None)

    `disable_plugin` Disable the specified plugin, pluginpath

    Parameters:

    - or str repo (Repository) – Repository containing the plugin to disable
    - or str plugin (RepoPlugin) – RepoPlugin to disable

    Returns: | Boolean value True if the plugin was successfully disabled, False otherwise
    Return type: | Boolean

    Example:

        >>> mgr = RepositoryManager()
        >>> mgr.disable_plugin('binaryninja-bookmarks')
        True
        >>>

  `enable_plugin`(plugin, install=True, repo=None)

    `enable_plugin` Enables the installed plugin ‘plugin’, optionally installing the plugin if install is set to True (default), and optionally using the non-default repository.

    Parameters:

    - name (str) – Name of the plugin to enable
    - install (Boolean) – Optionally install the repo, defaults to True.
    - repo (str) – Optional, specify a repository other than the default repository.

    Returns: | Boolean value True if the plugin was successfully enabled, False otherwise
    Return type: | Boolean

    Example:

        >>> mgr = RepositoryManager()
        >>> mgr.enable_plugin('binaryninja-bookmarks')
        True
        >>>

  `install_plugin`(plugin, repo=None)

    `install_plugin` install the specified plugin, pluginpath

    Parameters:

    - or str repo (Repository) – Repository containing the plugin to install
    - or str plugin (RepoPlugin) – RepoPlugin to install

    Returns: | Boolean value True if the plugin was successfully installed, False otherwise
    Return type: | Boolean

    Example:

        >>> mgr = RepositoryManager()
        >>> mgr.install_plugin('binaryninja-bookmarks')
        True
        >>>

  `plugins`

    List of all RepoPlugins in each repository

  `repositories`

    List of Repository objects being managed

  `uninstall_plugin`(plugin, repo=None)

    `uninstall_plugin` uninstall the specified plugin, pluginpath

    Parameters:

    - or str repo (Repository) – Repository containing the plugin to uninstall
    - or str plugin (RepoPlugin) – RepoPlugin to uninstall

    Returns: | Boolean value True if the plugin was successfully uninstalled, False otherwise
    Return type: | Boolean

    Example:

        >>> mgr = RepositoryManager()
        >>> mgr.uninstall_plugin('binaryninja-bookmarks')
        True
        >>>

  `update_plugin`(plugin, repo=None)

    `update_plugin` update the specified plugin, pluginpath

    Parameters:

    - or str repo (Repository) – Repository containing the plugin to update
    - or str plugin (RepoPlugin) – RepoPlugin to update

    Returns: | Boolean value True if the plugin was successfully updated, False otherwise
    Return type: | Boolean

    Example:

        >>> mgr = RepositoryManager()
        >>> mgr.update_plugin('binaryninja-bookmarks')
        True
        >>>