code: def read_user_choice(var_name, options):
      
      # Please see http://click.pocoo.org/4/api/#click.prompt
      if not isinstance(options, list):
          raise TypeError
  
      if not options:
          raise ValueError
  
      choice_map = OrderedDict(
          (u'{}'.format(i), value) for i, value in enumerate(options, 1)
      )
      choices = choice_map.keys()
      default = u'1'
  
      choice_lines = [u'{} - {}'.format(*c) for c in choice_map.items()]
      prompt = u'\n'.join((
          u'Select {}:'.format(var_name),
          u'\n'.join(choice_lines),
          u'Choose from {}'.format(u', '.join(choices))
      ))
  
      user_choice = click.prompt(
          prompt, type=click.Choice(choices), default=default
      )
      return choice_map[user_choice]
docs: Prompt the user to choose from several options for the given variable.
  
      The first item will be returned if no input happens.
  
      :param str var_name: Variable as specified in the context
      :param list options: Sequence of options that are available to select from
      :return: Exactly one item of ``options`` that has been chosen by the user