def generate_select(data, id=''):
    """Generates a select box from a tuple of tuples

    .. code-block:: python

       generate_select((
           ('val1', 'Value One'),
           ('val2', 'Value Two'),
           ('val3', 'Value Three')
       ))

    will return:-

    .. code-block:: html

       <select id=''>
          <option value="val1">Value One</option>
          <option value="val2">Value Two</option>
          <option value="val3">Value Three</option>
       </select>

    :param data: This is a tuple of tuples (can also be a list of lists. But
                 tuples will behave more efficiently than lists and who likes
                 mutation anyway?
    :rtype: :class:`str`/HTML

    """

    output = []
    out = output.append
    out('<select id="%s">\n' % id)
    for option in data:
        out('\t<option value="%s">%s</option>\n' % (option[0], option[1]))
    out('</select>')
    return ''.join(output)