# `certbot.plugins.selection`

Decide which plugins to use for authentication & installation

`certbot.plugins.selection.``pick_configurator`(config, default, plugins, question='How would you like to authenticate and install certificates?')

  Pick configurator plugin.

`certbot.plugins.selection.``pick_installer`(config, default, plugins, question='How would you like to install certificates?')

  Pick installer plugin.

`certbot.plugins.selection.``pick_authenticator`(config, default, plugins, question='How would you like to authenticate with the ACME CA?')

  Pick authentication plugin.

`certbot.plugins.selection.``pick_plugin`(config, default, plugins, question, ifaces)

  Pick plugin.

  Parameters:

  - certbot.interfaces.IConfig – Configuration
  - default (str) – Plugin name supplied by user or `None`.
  - plugins (certbot.plugins.disco.PluginsRegistry) – All plugins registered as entry points.
  - question (str) – Question to be presented to the user in case multiple candidates are found.
  - ifaces (list) – Interfaces that plugins must provide.

  Returns: | Initialized plugin.
  Return type: | IPlugin

`certbot.plugins.selection.``choose_plugin`(prepared, question)

  Allow the user to choose their plugin.

  Parameters:

  - prepared (list) – List of `PluginEntryPoint`.
  - question (str) – Question to be presented to the user.

  Returns: | Plugin entry point chosen by the user.
  Return type: | `PluginEntryPoint`

`certbot.plugins.selection.``record_chosen_plugins`(config, plugins, auth, inst)

  Update the config entries to reflect the plugins we actually selected.

`certbot.plugins.selection.``choose_configurator_plugins`(config, plugins, verb)

  Figure out which configurator we’re going to use, modifies config.authenticator and config.installer strings to reflect that choice if necessary.

  :raises errors.PluginSelectionError if there was a problem

  Returns: | (an `IAuthenticator` or None, an `IInstaller` or None)
  Return type: | tuple

`certbot.plugins.selection.``set_configurator`(previously, now)

  Setting configurators multiple ways is okay, as long as they all agree :param str previously: previously identified request for the installer/authenticator :param str requested: the request currently being processed

`certbot.plugins.selection.``cli_plugin_requests`(config)

  Figure out which plugins the user requested with CLI and config options

  Returns: | (requested authenticator string or None, requested installer string or None)
  Return type: | tuple

`certbot.plugins.selection.``diagnose_configurator_problem`(cfg_type, requested, plugins)

  Raise the most helpful error message about a plugin being unavailable

  Parameters:

  - cfg_type (str) – either “installer” or “authenticator”
  - requested (str) – the plugin that was requested
  - plugins (PluginsRegistry) – available plugins

  Raises: | error.PluginSelectionError – if there was a problem