# Buggy code
def checklist(self, message, tags, default_status=True, **unused_kwargs):
    """Displays a checklist.

    :param message: Message to display before choices
    :param list tags: where each is of type :class:`str` len(tags) > 0
    :param bool default_status: If True, items are in a selected state by
        default.
    :param dict _kwargs: absorbs default / cli_args


    :returns: tuple of the form (`code`, `list_tags`) where
        `code` - display exit code
        `list_tags` - list of str tags selected by the user

    """
    choices = [(tag, "", default_status) for tag in tags]
    return _clean(
        self.dialog.checklist(
            message, width=self.width, height=self.height, choices=choices
        )
    )


# Traceback (errors.NoInstallationError)
2016-04-11 18:31:36,104:DEBUG:letsencrypt.main:Root logging level set at 30
2016-04-11 18:31:36,105:INFO:letsencrypt.main:Saving debug log to /var/log/letsencrypt/letsencrypt.log
2016-04-11 18:31:36,105:DEBUG:letsencrypt.main:letsencrypt version: 0.6.0.dev0
2016-04-11 18:31:36,105:DEBUG:letsencrypt.main:Arguments: []
2016-04-11 18:31:36,106:DEBUG:letsencrypt.main:Discovered plugins: PluginsRegistry(PluginEntryPoint#nginx,PluginEntryPoint#standalone,PluginEntryPoint#manual,PluginEntryPoint#webroot,PluginEntryPoint#apache,PluginEntryPoint#null)
2016-04-11 18:31:36,109:DEBUG:letsencrypt.plugins.selection:Requested authenticator None and installer None
2016-04-11 18:31:36,430:DEBUG:letsencrypt.plugins.disco:No installation (PluginEntryPoint#nginx):
Traceback (most recent call last):
File "/root/letsencrypt/letsencrypt/plugins/disco.py", line 104, in prepare
self._initialized.prepare()
File "/root/letsencrypt/letsencrypt-nginx/letsencrypt_nginx/configurator.py", line 115, in prepare
raise errors.NoInstallationError
NoInstallationError
2016-04-11 18:31:36,430:DEBUG:letsencrypt.plugins.selection:Single candidate plugin: * apache
Description: Apache Web Server - Alpha
Interfaces: IAuthenticator, IInstaller, IPlugin
Entry point: apache = letsencrypt_apache.configurator:ApacheConfigurator
Initialized: <letsencrypt_apache.configurator.ApacheConfigurator object at 0x7fc63206bc10>
Prep: True
2016-04-11 18:31:36,431:DEBUG:letsencrypt.plugins.selection:Selected authenticator <letsencrypt_apache.configurator.ApacheConfigurator object at 0x7fc63206bc10> and installer <letsencrypt_apache.configurator.ApacheConfigurator object at 0x7fc63206bc10>
2016-04-11 18:31:38,909:DEBUG:letsencrypt.main:Exiting abnormally:
Traceback (most recent call last):
File "/root/letsencrypt/venv/bin/letsencrypt", line 9, in <module>
load_entry_point('letsencrypt', 'console_scripts', 'letsencrypt')()
File "/root/letsencrypt/letsencrypt/main.py", line 692, in main
return config.func(config, plugins)
File "/root/letsencrypt/letsencrypt/main.py", line 452, in run
domains = _find_domains(config, installer)
File "/root/letsencrypt/letsencrypt/main.py", line 261, in _find_domains
domains = display_ops.choose_names(installer)
File "/root/letsencrypt/letsencrypt/display/ops.py", line 100, in choose_names
return _choose_names_manually()
File "/root/letsencrypt/letsencrypt/display/ops.py", line 150, in _choose_names_manually
cli_flag="--domains")
File "/root/letsencrypt/letsencrypt/display/util.py", line 146, in input
return self.dialog.inputbox(message, width=self.width, height=height)
File "/root/letsencrypt/venv/local/lib/python2.7/site-packages/dialog.py", line 2715, in inputbox
kwargs, strip_xdialog_newline=True, raw_help=True)
File "/root/letsencrypt/venv/local/lib/python2.7/site-packages/dialog.py", line 1746, in _widget_with_string_output
code, output = self._perform(args, **kwargs)
File "/root/letsencrypt/venv/local/lib/python2.7/site-packages/dialog.py", line 1541, in _perform
args_file)
File "/root/letsencrypt/venv/local/lib/python2.7/site-packages/dialog.py", line 1502, in _handle_program_exit
child_output_rfd)
File "/root/letsencrypt/venv/local/lib/python2.7/site-packages/dialog.py", line 1454, in _wait_for_program_termination
child_output.strip()))
DialogError

# Fixed code
def checklist(self, message, tags, default_status=True, **unused_kwargs):
    """Displays a checklist.

    :param message: Message to display before choices
    :param list tags: where each is of type :class:`str` len(tags) > 0
    :param bool default_status: If True, items are in a selected state by
        default.
    :param dict _kwargs: absorbs default / cli_args


    :returns: tuple of the form (`code`, `list_tags`) where
        `code` - display exit code
        `list_tags` - list of str tags selected by the user

    """
    choices = [(tag, "", default_status) for tag in tags]
    return self.dialog.checklist(message, choices=choices)