code: def auto_message(self, args):
          
          if any(args) and callable(args[0]) and not self.message:
              return args[0].__name__
          elif not self.message:
              return self.default_message
          else:
              return self.message
docs: Try guess the message by the args passed
  
          args: a set of args passed on the wrapper __call__ in
                the definition above.
  
          if the object already have some message (defined in __init__),
          we don't change that. If the first arg is a function, so is decorated
          without argument, use the func name as the message.
  
          If not self.message anyway, use the default_message global,
          another else  use the default self.message already