'Query the user with a yes/no question.
Yes and No label must begin with different letters, and must contain at
least one letter each.
:param str message: question for the user
:param str yes_label: Label of the "Yes" parameter
:param str no_label: Label of the "No" parameter
:param default: default value to return (if one exists)
:param str cli_flag: option used to set this value with the CLI
:param bool force_interactive: True if it\'s safe to prompt the user
because it won\'t cause any workflow regressions
:returns: True for "Yes", False for "No"
:rtype: bool'

def yesno(self, message, yes_label='Yes', no_label='No', default=None, cli_flag=None, force_interactive=False, **unused_kwargs):

    if self._return_default(message, default, cli_flag, force_interactive):
        return default
    side_frame = (('-' * 79) + os.linesep)
    message = _wrap_lines(message)
    self.outfile.write('{0}{frame}{msg}{0}{frame}'.format(os.linesep, frame=side_frame, msg=message))
    while True:
        ans = input_with_timeout('{yes}/{no}:    '.format(yes=_parens_around_char(yes_label), no=_parens_around_char(no_label)))
        if (ans.startswith(yes_label[0].lower()) or ans.startswith(yes_label[0].upper())):
            return True
        if (ans.startswith(no_label[0].lower()) or ans.startswith(no_label[0].upper())):
            return False
