docs: def add_function(self,
                       fun=None,
                       name=None,
                       fun_type=FUN_TYPE):
          """actually replace function"""
          if not name:
              if six.PY2:
                  name = fun.func_name
              else:
                  name = fun.__name__
  
          self.say('adding fun(%s)' % name, verbosity=50)
          self.say('adding fun_type:%s' % fun_type, verbosity=50)
  
          if self.function_exists(name):
              self.cry('overwriting :fun(%s)' % name, verbosity=10)
  
          self.say('added :' + name, verbosity=10)
          self._rule_functions[name] = RuleFunction(name, fun, fun_type)
          return True