class_docstr: Custom CliRunner class to handle passing context.
class_docstr_tok: ["Custom","CliRunner","class","to","handle","passing","context","."]
code: def __init__(
      self, cli_context: CLIContext, project_path: str
  ) -> None:  # noqa: D
      self.cli_context = cli_context
      self.project_path = project_path
      super().__init__()
  
imports: from __future__ import annotations
  import os
  import pathlib
  import tempfile
  from typing import Generator, Optional, Sequence
  import click
  import pytest
  from click.testing import CliRunner, Result
  from dbt_semantic_interfaces.protocols.semantic_manifest import SemanticManifest
  from dbt_semantic_interfaces.test_utils import as_datetime
  from typing_extensions import override
  from metricflow.cli.cli_context import CLIContext
  from metricflow.cli.dbt_connectors.dbt_config_accessor import dbtArtifacts, dbtProjectMetadata
  from metricflow.engine.metricflow_engine import MetricFlowEngine
  from metricflow.model.semantic_manifest_lookup import SemanticManifestLookup
  from metricflow.plan_conversion.column_resolver import DunderColumnAssociationResolver
  from metricflow.protocols.sql_client import SqlClient
  from metricflow.test.fixtures.setup_fixtures import dbt_project_dir
  from metricflow.test.time.configurable_time_source import ConfigurableTimeSource
label_desc: Use image node_id 1 to create a new MetricFlowCliRunner object from inherited base classes: CliRunner with example: obj = MetricFlowCliRunner(cli_context, project_path)