class_docstr: Fake context for testing. Manually initialize or override params used by CLIContext as appropriate.
  
  Note - this construct should not exist. It bypasses a fundamental initialization process within the CLI which
  can currently only be tested manually. Eventually, we need to refactor the CLI itself to allow for more robust
  testing. This will, however, allow us to test the invocation of CLI commands assuming the required configuration
  components are all in place.
class_docstr_tok: ["Fake","context","for","testing",".","Manually","initialize","or","override","params","used","by","CLIContext","as","appropriate",".","Note","-","this","construct","should","not","exist",".","It","bypasses","a","fundamental","initialization","process","within","the","CLI","which","can","currently","only","be","tested","manually",".","Eventually",",","we","need","to","refactor","the","CLI","itself","to","allow","for","more","robust","testing",".","This","will",",","however",",","allow","us","to","test","the","invocation","of","CLI","commands","assuming","the","required","configuration","components","are","all","in","place","."]
code: def semantic_manifest(self) -> SemanticManifest:
      assert (
          self._semantic_manifest
      ), "Must set _semantic_manifest before use!"
      return self._semantic_manifest
  
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 7 for calling the FakeCLIContext obj's underlying member method code with example usage: obj.semantic_manifest() and returns: self