docs: def _build_pipeline(self, task):
          """Build up the pipeline."""
  
          self.pipeline_steps = []
          kwargs = {}
          if self.default_encoding:
              kwargs["default_encoding"] = self.default_encoding
  
          steps = task.get('pipeline', [])
          if steps is None:
              self.pipeline_steps = None
          else:
              if not steps:
                  steps = task.get('filters', [])
                  if steps:
                      util.warn_deprecated(
                          "'filters' key in config is deprecated. 'pipeline' should be used going forward."
                      )
  
              if not steps:
                  steps.append('pyspelling.filters.text')
  
              for step in steps:
                  # Retrieve module and module options
                  if isinstance(step, dict):
                      name, options = list(step.items())[0]
                  else:
                      name = step
                      options = {}
                  if options is None:
                      options = {}
  
                  module = self._get_module(name)
                  if issubclass(module, filters.Filter):
                      self.pipeline_steps.append(module(options, **kwargs))
                  elif issubclass(module, flow_control.FlowControl):
                      if self.pipeline_steps:
                          self.pipeline_steps.append(module(options))
                      else:
                          raise ValueError("Pipeline cannot start with a 'Flow Control' plugin!")
                  else:
                      raise ValueError("'%s' is not a valid plugin!" % name)