class_docstr: Resolves group-by items for potentially ambiguous inputs that are specified in queries / filters.
docstr: Return all available group-by-items at a given node.
  
  By default, the query node is used, so this will return the available group-by-items that can be used in a
  query.
docstr_tok: ["Return","all","available","group-by-items","at","a","given","node",".","By","default",",","the","query","node","is","used",",","so","this","will","return","the","available","group-by-items","that","can","be","used","in","a","query","."]
code: def resolve_available_items(
      self,
      resolution_node: Optional[ResolutionDagSinkNode] = None,
  ) -> AvailableGroupByItemsResolution:
      """Return all available group-by-items at a given node.
  
      By default, the query node is used, so this will return the available group-by-items that can be used in a
      query.
      """
      if resolution_node is None:
          resolution_node = self._resolution_dag.sink_node
  
      push_down_visitor = _PushDownGroupByItemCandidatesVisitor(
          manifest_lookup=self._manifest_lookup,
          source_spec_patterns=(),
          suggestion_generator=None,
      )
  
      push_down_result: PushDownResult = resolution_node.accept(
          push_down_visitor
      )
  
      return AvailableGroupByItemsResolution(
          specs=push_down_result.candidate_set.specs,
          issue_set=push_down_result.issue_set,
      )
  
imports: from __future__ import annotations
  import logging
  from dataclasses import dataclass
  from typing import Optional, Tuple
  from dbt_semantic_interfaces.call_parameter_sets import TimeDimensionCallParameterSet
  from dbt_semantic_interfaces.naming.keywords import METRIC_TIME_ELEMENT_NAME
  from dbt_semantic_interfaces.references import TimeDimensionReference
  from dbt_semantic_interfaces.type_enums import TimeGranularity
  from metricflow.mf_logging.formatting import indent
  from metricflow.mf_logging.pretty_print import mf_pformat
  from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup
  from metricflow.naming.object_builder_scheme import ObjectBuilderNamingScheme
  from metricflow.query.group_by_item.candidate_push_down.push_down_visitor import PushDownResult, _PushDownGroupByItemCandidatesVisitor
  from metricflow.query.group_by_item.resolution_dag.dag import GroupByItemResolutionDag, ResolutionDagSinkNode
  from metricflow.query.group_by_item.resolution_path import MetricFlowQueryResolutionPath
  from metricflow.query.issues.group_by_item_resolver.ambiguous_group_by_item import AmbiguousGroupByItemIssue
  from metricflow.query.issues.issues_base import MetricFlowQueryResolutionIssueSet
  from metricflow.query.suggestion_generator import QueryItemSuggestionGenerator
  from metricflow.specs.patterns.base_time_grain import BaseTimeGrainPattern
  from metricflow.specs.patterns.spec_pattern import SpecPattern
  from metricflow.specs.patterns.typed_patterns import TimeDimensionPattern
  from metricflow.specs.specs import LinkableInstanceSpec, LinkableSpecSet
label_desc: Use image node_id 4 for calling the GroupByItemResolver obj's underlying member method code with example usage: obj.resolve_available_items(resolution_node) and returns: AvailableGroupByItemsResolution