docs: def append(self, name, *args, **kwargs) -> 'Pipeline':
          """Add a function (either as a reference, or by name) and arguments to the pipeline.
  
          :param name: The name of the function
          :type name: str or (pybel.BELGraph -> pybel.BELGraph)
          :param args: The positional arguments to call in the function
          :param kwargs: The keyword arguments to call in the function
          :return: This pipeline for fluid query building
          :raises MissingPipelineFunctionError: If the function is not registered
          """
          if isinstance(name, types.FunctionType):
              return self.append(name.__name__, *args, **kwargs)
          elif isinstance(name, str):
              get_transformation(name)
          else:
              raise TypeError('invalid function argument: {}'.format(name))
  
          av = {
              'function': name,
          }
  
          if args:
              av['args'] = args
  
          if kwargs:
              av['kwargs'] = kwargs
  
          self.protocol.append(av)
          return self