docs: def input(self, filter_fn, prompt):
          """Prompt user until valid input is received.
  
          RejectWarning is raised if a KeyboardInterrupt is caught.
          """
          while True:
              try:
                  return filter_fn(raw_input(prompt))
              except InvalidInputError as e:
                  if e.message:
                      self.show('ERROR: ' + e.message)
              except KeyboardInterrupt:
                  raise RejectWarning