class_docstr: An input to describe a where filter anywhere in the resolution DAG.
  
  This can represent a query-level where filter, or one that is in a metric definition. Treating the defined filters
  as a resolver input so that it can go through the same error flows as the other query inputs.
class_docstr_tok: ["An","input","to","describe","a","where","filter","anywhere","in","the","resolution","DAG",".","This","can","represent","a","query-level","where","filter",",","or","one","that","is","in","a","metric","definition",".","Treating","the","defined","filters","as","a","resolver","input","so","that","it","can","go","through","the","same","error","flows","as","the","other","query","inputs","."]
code: def ui_description(self) -> str:
      lines = [
          "WhereFilter(",
          indent(
              mf_pformat(
                  [
                      where_filter.where_sql_template
                      for where_filter in self.where_filter_intersection.where_filters
                  ]
              )
          ),
          ")",
          "Filter Path:",
          indent(self.filter_resolution_path.ui_description),
      ]
      if self.object_builder_str is not None:
          lines.append("Object Builder Input:")
          lines.append(indent(self.object_builder_str))
      return "\n".join(lines)
  
imports: from __future__ import annotations
  from dataclasses import dataclass
  from typing import Optional, Tuple, Union
  from dbt_semantic_interfaces.protocols import WhereFilterIntersection
  from typing_extensions import override
  from metricflow.mf_logging.formatting import indent
  from metricflow.mf_logging.pretty_print import mf_pformat
  from metricflow.naming.metric_scheme import MetricNamingScheme
  from metricflow.naming.naming_scheme import QueryItemNamingScheme
  from metricflow.protocols.query_parameter import GroupByParameter, MetricQueryParameter, OrderByQueryParameter
  from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath
  from metricflow.query.resolver_inputs.base_resolver_inputs import InputPatternDescription, MetricFlowQueryResolverInput
  from metricflow.specs.patterns.metric_pattern import MetricSpecPattern
  from metricflow.specs.patterns.spec_pattern import SpecPattern
label_desc: Use image node_id 1 for calling the ResolverInputForWhereFilterIntersection obj's underlying member method code with example usage: obj.ui_description() and returns: str