docs: def format_as_text(expl,  # type: Explanation
                     show=fields.ALL,
                     highlight_spaces=None,  # type: Optional[bool]
                     show_feature_values=False,  # type: bool
                     ):
      # type: (...) -> str
      """ Format explanation as text.
  
      Parameters
      ----------
      expl : eli5.base.Explanation
          Explanation returned by ``eli5.explain_weights`` or
          ``eli5.explain_prediction`` functions.
  
      highlight_spaces : bool or None, optional
          Whether to highlight spaces in feature names. This is useful if
          you work with text and have ngram features which may include spaces
          at left or right. Default is None, meaning that the value used
          is set automatically based on vectorizer and feature values.
  
      show_feature_values : bool
          When True, feature values are shown along with feature contributions.
          Default is False.
  
      show : List[str], optional
          List of sections to show. Allowed values:
  
          * 'targets' - per-target feature weights;
          * 'transition_features' - transition features of a CRF model;
          * 'feature_importances' - feature importances of a decision tree or
            an ensemble-based estimator;
          * 'decision_tree' - decision tree in a graphical form;
          * 'method' - a string with explanation method;
          * 'description' - description of explanation method and its caveats.
  
          ``eli5.formatters.fields`` provides constants that cover common cases:
          ``INFO`` (method and description), ``WEIGHTS`` (all the rest),
          and ``ALL`` (all).
      """
      lines = []  # type: List[str]
  
      if highlight_spaces is None:
          highlight_spaces = should_highlight_spaces(expl)
  
      if expl.error:  # always shown
          lines.extend(_error_lines(expl))
  
      explaining_prediction = has_any_values_for_weights(expl)
      show_feature_values = show_feature_values and explaining_prediction
  
      for key in show:
          if not getattr(expl, key, None):
              continue
  
          if key == 'method':
              lines.extend(_method_lines(expl))
  
          if key == 'description':
              lines.extend(_description_lines(expl))
  
          if key == 'transition_features':
              lines.extend(_transition_features_lines(expl))
  
          if key == 'targets':
              lines.extend(_targets_lines(
                  expl,
                  hl_spaces=highlight_spaces,
                  show_feature_values=show_feature_values,
                  explaining_prediction=explaining_prediction,
              ))
  
          if key == 'feature_importances':
              lines.extend(_feature_importances_lines(
                  expl, hl_spaces=highlight_spaces))
  
          if key == 'decision_tree':
              lines.extend(_decision_tree_lines(expl))
  
      return '\n'.join(lines)