docs: def get_valid_value(prompt, validator, default=None):
      '''Displays the provided prompt and gets input from the user. This behavior
      loops indefinitely until the provided validator returns True for the user
      input. If a default value is provided, it will be used only if the user
      hits Enter and does not provide a value.
  
      If the validator callable has an error_message attribute, it will be
      displayed for an invalid value, otherwise a generic message is used.
      '''
      ans = get_value(prompt, default)
      while not validator(ans):
          try:
              print validator.error_message
          except AttributeError:
              print 'Invalid value.'
          ans = get_value(prompt, default)
  
      return ans