# `certbot.plugins.disco`

Utilities for plugins discovery and selection.

class `certbot.plugins.disco.``PluginEntryPoint`(entry_point)

  Bases: `object`

  Plugin entry point.

  `PREFIX_FREE_DISTRIBUTIONS` = ['certbot', 'certbot-apache', 'certbot-dns-cloudflare', 'certbot-dns-cloudxns', 'certbot-dns-digitalocean', 'certbot-dns-dnsimple', 'certbot-dns-dnsmadeeasy', 'certbot-dns-gehirn', 'certbot-dns-google', 'certbot-dns-linode', 'certbot-dns-luadns', 'certbot-dns-nsone', 'certbot-dns-ovh', 'certbot-dns-rfc2136', 'certbot-dns-route53', 'certbot-dns-sakuracloud', 'certbot-nginx', 'certbot-postfix']

    Distributions for which prefix will be omitted.

  classmethod `entry_point_to_plugin_name`(entry_point)

    Unique plugin name for an `entry_point`

  `description`

    Description of the plugin.

  `description_with_name`

    Description with name. Handy for UI.

  `long_description`

    Long description of the plugin.

  `hidden`

    Should this plugin be hidden from UI?

  `ifaces`(*ifaces_groups)

    Does plugin implements specified interface groups?

  `initialized`

    Has the plugin been initialized already?

  `init`(config=None)

    Memoized plugin initialization.

  `verify`(ifaces)

    Verify that the plugin conforms to the specified interfaces.

  `prepared`

    Has the plugin been prepared already?

  `prepare`()

    Memoized plugin preparation.

  `misconfigured`

    Is plugin misconfigured?

  `problem`

    Return the Exception raised during plugin setup, or None if all is well

  `available`

    Is plugin available, i.e. prepared or misconfigured?

class `certbot.plugins.disco.``PluginsRegistry`(plugins)

  Bases: `_abcoll.Mapping`

  Plugins registry.

  classmethod `find_all`()

    Find plugins using setuptools entry points.

  `init`(config)

    Initialize all plugins in the registry.

  `filter`(pred)

    Filter plugins based on predicate.

  `visible`()

    Filter plugins based on visibility.

  `ifaces`(*ifaces_groups)

    Filter plugins based on interfaces.

  `verify`(ifaces)

    Filter plugins based on verification.

  `prepare`()

    Prepare all plugins in the registry.

  `available`()

    Filter plugins based on availability.

  `find_init`(plugin)

    Find an initialized plugin.

    This is particularly useful for finding a name for the plugin (although `IPluginFactory.__call__` takes `name` as one of the arguments, `IPlugin.name` is not part of the interface):

        # plugin is an instance providing IPlugin, initialized
        # somewhere else in the code
        plugin_registry.find_init(plugin).name

    Returns `None` if `plugin` is not found in the registry.