class_docstr: Runs query validation rules after query resolution is complete.
class_docstr_tok: ["Runs","query","validation","rules","after","query","resolution","is","complete","."]
docstr: Validate according to the list of configured validation rules and return a set containing issues found.
docstr_tok: ["Validate","according","to","the","list","of","configured","validation","rules","and","return","a","set","containing","issues","found","."]
code: def validate_query(
      self,
      resolution_dag: GroupByItemResolutionDag,
      resolver_input_for_query: ResolverInputForQuery,
  ) -> MetricFlowQueryResolutionIssueSet:
      """Validate according to the list of configured validation rules and return a set containing issues found."""
      validation_visitor = _PostResolutionQueryValidationVisitor(
          resolver_input_for_query=resolver_input_for_query,
          validation_rules=self._validation_rules,
      )
  
      return resolution_dag.sink_node.accept(validation_visitor)
  
imports: from __future__ import annotations
  from typing import Sequence
  from typing_extensions import override
  from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup
  from metricflow.query.group_by_item.candidate_push_down.push_down_visitor import DagTraversalPathTracker
  from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag
  from metricflow.query.group_by_item.resolution_dag.resolution_nodes.base_node import GroupByItemResolutionNode, GroupByItemResolutionNodeVisitor
  from metricflow.query.group_by_item.resolution_dag.resolution_nodes.measure_source_node import MeasureGroupByItemSourceNode
  from metricflow.query.group_by_item.resolution_dag.resolution_nodes.metric_resolution_node import MetricGroupByItemResolutionNode
  from metricflow.query.group_by_item.resolution_dag.resolution_nodes.no_metrics_query_source_node import NoMetricsGroupByItemSourceNode
  from metricflow.query.group_by_item.resolution_dag.resolution_nodes.query_resolution_node import QueryGroupByItemResolutionNode
  from metricflow.query.issues.issues_base import MetricFlowQueryResolutionIssueSet
  from metricflow.query.resolver_inputs.query_resolver_inputs import ResolverInputForQuery
  from metricflow.query.validation_rules.base_validation_rule import PostResolutionQueryValidationRule
  from metricflow.query.validation_rules.duplicate_metric import DuplicateMetricValidationRule
  from metricflow.query.validation_rules.metric_time_requirements import MetricTimeQueryValidationRule
label_desc: Use image node_id 2 for calling the PostResolutionQueryValidator obj's underlying member method code with example usage: obj.validate_query(resolution_dag, resolver_input_for_query) and returns: resolution_dag